转载地址:https://gxnotes.com/article/41270.html
问题描述
我找不到正确的正则表达式来匹配任何不以某种条件结尾的字符串。例如,我不想匹配以a
结尾的任何内容。
这匹配
b
ab
1
这不符合
a ba
我知道正则表达式应该结束于$
来标记结束,尽管我不知道应该怎么做。
编辑:原来的问题似乎不是我的例子。那么,如何处理多个字符?说什么没有结束ab
?
我已经能够解决这个问题,使用this thread:
.*(?:(?!ab).).$
虽然这样做的缺点是它与一个字符串不匹配。
最佳解决方案
你不给我们的语言,但是如果你的正则表达式支持look behind assertion,这就是你需要的:
.*(?<!a)$
(?<!a)
是一个否定的lookbehind断言,确保在字符串(或具有m
修饰符的行)的结尾之前,没有字符”a”。
您也可以轻松地将其与其他字符进行扩展,因为此检查字符串并不是字符类。
.*(?<!ab)$
这将匹配任何不结束与”ab”,see it on Regexr
次佳解决方案
使用not(^
)符号:
.*[^a]$
如果您将^
符号放在方括号的开头,则表示“括号内的所有内容”。$
只是一个到底的锚点。
For multiple characters,只是把它们全部放在自己的字符集中:
.*[^a][^b]$
第三种解决方案
^(?!.*[.]tmp$).*$
用Regex Tester测试得出以下结果:
第四种方案
上面的正则表达式将匹配不是以a
结尾的字符串。参考文献
原文地址:https://www.jb51.cc/regex/358258.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。