【问题标题】:How to match string if not a substring of another string?如果不是另一个字符串的子字符串,如何匹配字符串?
【发布时间】:2012-08-16 15:51:55
【问题描述】:

我正在寻找一种方法来匹配一个字符串,前提是它不是另一个字符串的子字符串。

例子:

I need to find if text contains string "bbbb" that is not part of a string "aaaabbbbcccc".

正则表达式应该匹配字符串:

aaabbbbcccc
aaaabbbbccc
aaabbbbccc
bbbbcccc
aaaabbbb

但不匹配:

aaaabbbbcccc

我已经尝试通过环视来做到这一点:

(?<!aaaa)bbbb(?!cccc)

但它不起作用。它只匹配

aaabbbbccc

【问题讨论】:

  • 为什么要匹配aaabbbccc?里面只有 3 个b
  • 使用 PHP。是的,有一个错字,应该是 aaabbbbccc。

标签: regex


【解决方案1】:

问题在于,如果您按照自己的方式使用,这两个断言都必须为真。使用交替使其仅在两个断言都失败时才失败,而不是在只有一个断言失败时失败。

(?<!aaaa)bbbb|bbbb(?!cccc)

here on Regexr

我假设您的第三个示例也应该有四个“b”。

【讨论】:

    【解决方案2】:

    如果你这样做:

    .{0,4}b{4}.{0,4}
    

    然后是这个:

    a{4}b{4}c{4}
    

    【讨论】:

      【解决方案3】:
      perl -ne 'print if /bbbb/ && $_!~/aaaabbbbcccc/ ' your_input
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-11
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 2020-08-23
        • 2021-08-17
        • 1970-01-01
        • 2013-08-16
        相关资源
        最近更新 更多