2012-08-13 79 views
4

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

例子:

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

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

aaabbbbcccc 
aaaabbbbccc 
aaabbbbccc 
bbbbcccc 
aaaabbbb 

但不匹配:

aaaabbbbcccc 

我试着lookarounds做到这一点:

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

但它不起作用。它仅匹配

aaabbbbccc 
+1

你在用什么语言? – 2012-08-13 09:47:05

+0

为什么要匹配'aaabbbccc'?只有3'b'在里面。 – kev 2012-08-13 10:05:15

+0

使用PHP。是的,有一个错字,它应该是aaabbbbccc。 – 2012-08-13 10:16:05

回答

2

的问题是,无论是断言必须是真实的,如果你使用它是你的方式。如果两个断言均失败,则使用替代方法使其失败,但如果两个断言都失败,则不会失败。

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

看到它here on Regexr

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

0

,如果你这样做:

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

,然后这样的:

a{4}b{4}c{4} 
0
perl -ne 'print if /bbbb/ && $_!~/aaaabbbbcccc/ ' your_input 
相关问题