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

正则表达式 – 正则表达式和否定整个字符组[重复]

发布时间:2020-12-14 06:32:49 所属栏目:百科 来源:网络整理
导读:参见英文答案 Regular expression to match a line that doesn’t contain a word?26个答案我正在尝试一些我认为应该对我来说相当明显的东西,但事实并非如此。我正在尝试匹配一个不包含特定字符序列的字符串。我已经尝试使用[^ ab],[^(ab)]等来匹配不包含
参见英文答案 > Regular expression to match a line that doesn’t contain a word?26个答案我正在尝试一些我认为应该对我来说相当明显的东西,但事实并非如此。我正在尝试匹配一个不包含特定字符序列的字符串。我已经尝试使用[^ ab],[^(ab)]等来匹配不包含’a’或’b’的字符串,或只包含’a’或only’b’或’ba’但不匹配’ab’的字符串。我给出的例子不符合’ab’它是真的但它们也不会单独匹配’a’而我需要它们。有一些简单的方法可以做到这一点吗?
使用否定前瞻:
^(?!.*ab).*$

更新:在下面的评论中,我说这种方法比Peter’s answer中给出的方法慢。我从那时起进行了一些测试,发现它的速度确实稍快一些。然而,更喜欢这种技术而不是另一种技术的原因不是速度,而是简单性。

另一种技术,描述为here作为驯化贪婪令牌,适用于更复杂的问题,例如匹配分隔符文本,其中分隔符由多个字符组成(如HTML,如Luke评论below)。对于问题中描述的问题,它太过分了。

对于任何感兴趣的人,我测试了一大块Lorem Ipsum文本,计算不包含“quo”一词的行数。这些是我使用的正则表达式:

(?m)^(?!.*bquob).+$

(?m)^(?:(?!bquob).)+$

无论是在整个文本中搜索匹配,还是将其分解为线条并单独匹配,锚定的前瞻一直优于浮动前瞻。

(编辑:李大同)

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

    推荐文章
      热点阅读