2012-08-13 80 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 
相關問題