微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式不以

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

参考文献

原文地址:https://www.jb51.cc/regex/358258.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐