正则表达式不以

前端之家收集整理的这篇文章主要介绍了正则表达式不以前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转载地址:https://gxnotes.com/article/41270.html

问题描述

我找不到正确的正则表达式来匹配任何不以某种条件结尾的字符串。例如,我不想匹配以a结尾的任何内容

这匹配

b
ab
1

这不符合

a
ba

我知道正则表达式应该结束于$标记结束,尽管我不知道应该怎么做。

编辑:原来的问题似乎不是我的例子。那么,如何处理多个字符?说什么没有结束ab

我已经能够解决这个问题,使用this thread

.*(?:(?!ab).).$

虽然这样做的缺点是它与一个字符串不匹配。

最佳解决方

你不给我们的语言,但是如果你的正则表达式支持look behind assertion,这就是你需要的:

.*(?<!a)$

(?<!a)是一个否定的lookbehind断言,确保在字符串(或具有m修饰符的行)的结尾之前,没有字符”a”。

参见here on Regexr

您也可以轻松地将其与其他字符进行扩展,因为此检查字符串并不是字符类。

.*(?<!ab)$

这将匹配任何不结束与”ab”,see it on Regexr

次佳解决方

使用not(^)符号:

.*[^a]$

如果您将^符号放在方括号的开头,则表示“括号内的所有内容”。$只是一个到底的锚点。

For multiple characters,只是把它们全部放在自己的字符集中:

.*[^a][^b]$

第三种解决方

搜索以”.tmp”结尾的文件,我们使用以下正则表达式:

^(?!.*[.]tmp$).*$

Regex Tester测试得出以下结果:

第四种方案

 上面的正则表达式将匹配不是以a结尾的字符串。

参考文献

猜你在找的正则表达式相关文章