如果不匹配另一个字符串的子串,如何匹配字符串?

时间:2012-08-13 09:45:16

标签: regex

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

示例:

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

3 个答案:

答案 0 :(得分:2)

问题在于,如果你以自己的方式使用它们,两个断言都必须是真的。如果两个断言都失败,则使用替换使其失败,但只有一个失败时才会失败。

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

here on Regexr

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

答案 1 :(得分:0)

如果你这样做:

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

然后这个:

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

答案 2 :(得分:0)

perl -ne 'print if /bbbb/ && $_!~/aaaabbbbcccc/ ' your_input