加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式不以

发布时间:2020-12-14 00:36:16 所属栏目:百科 来源:网络整理
导读:转载地址: https://gxnotes.com/article/41270.html 问题描述 我找不到正确的正则表达式来匹配任何不以某种条件结尾的字符串。例如,我不想匹配以 a 结尾的任何内容。 这匹配 b ab 1 这不符合 a ba 我知道正则表达式应该结束于 $ 来标记结束,尽管我不知道

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

参考文献

  • Regex not ending with

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读