4

我正在寻找一种仅在它不是另一个字符串的子字符串时才匹配字符串的方法。

例子:

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
4

3 回答 3

2

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

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

在 Regexr 上查看

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

于 2012-08-13T10:12:04.067 回答
0

如果你这样做:

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

然后这个:

a{4}b{4}c{4}
于 2012-08-13T09:57:45.007 回答
0
perl -ne 'print if /bbbb/ && $_!~/aaaabbbbcccc/ ' your_input
于 2012-08-13T10:06:16.723 回答