2015-01-14 103 views
6

假設以下單詞序列正則表達式,選擇最接近的匹配

BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA 

我想要做的就是從BLA提取文本看,但BLA這是最接近的樣子。即我想獲得

BLA text text text text LOOK 

我應該如何使用正則表達式來做到這一點?我得到了一個可行的解決方案,但效率極低。

BLA(?!.*?BLA.*?LOOK).*?LOOK 

是否有更好的和更高性能的方式來實現匹配這種模式?

我想要做的是:我想匹配BLA,然後向前看,直到看到積極的lookahead與LOOK或BLA的負向lookahead。但我不知道一種方法將其放入正則表達式中。

作爲一個引擎,我在python中使用re。

回答

0

只需找到LOOK和BLA之間的文本,而不BLA

In : re.search(r'BLA [^(BLA)]+ LOOK', 'BLA text text text text text text BLA text text text text LOOK text text text BLA text text BLA').group() 
Out: 'BLA text text text text LOOK' 

:-)

+0

哦......那會很容易:-)謝謝! – overseas

+0

問題是:如果我使用表達式,例如在 BLA文字文字文字文字文字文字文字BLA文本teLxt LOOK文字文字文字文字文字BLA BLA文本 所以如果有BLA之間的L和LOOK – overseas

+0

我看來,如果你需要修改你的正則表達式的知識。因爲'[^(BLA)] +'意味着它不會匹配BLA,而不匹配'B'或'('或'L'等等 – nu11p01n73R