正则表达式不以

转载地址: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结尾的字符串。

参考文献

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...