我正在寻找一种匹配字符串的方法,只要它不是另一个字符串的子字符串。
示例:
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
答案 0 :(得分:2)
问题在于,如果你以自己的方式使用它们,两个断言都必须是真的。如果两个断言都失败,则使用替换使其失败,但只有一个失败时才会失败。
(?<!aaaa)bbbb|bbbb(?!cccc)
我假设你的第三个例子也应该有四个“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