2012-09-10 23 views
0

我有這樣的正則表達式:[A-Z][A-Z] \d\d否定這個正則表達式 - 怎麼樣?

我想用它來代替一切,不匹配的空白(或其他任何字符)。我怎樣才能做到這一點?我否定字符類在這種情況下不起作用,因爲正則表達式本身有2個字符類。

串的短的部分看起來像這樣:

<div class=""></div>CL 17 </a><br> 

只有CL 17應保留,其餘的應該是空白。

注:我注意到,這似乎是複雜的,所以我寫一個小PHP腳本,它獲取匹配(preg_match_all)的列表,並處理那些在某種程度上這就是確定我的情況下解決它。

+3

所以你想把'foo AB 12 barXY 89baz'換成'**** AB 12 **** XY 89 ***'? –

+0

是的,正好... – user1638055

+0

用正則表達式這並不容易。我現在要去吃午飯了,但會在後面想到一些事情。 –

回答

0

上次編輯後,我會建議:

.*?([A-Z]{2} \d{2}).*?(?=[A-Z]{2} \d{2}|$) 

,則與第一組取代。

(編輯答案前):

[^A-Z][^A-Z]\S\D{2} 
+0

不工作,jEdit支持各種複雜的正則表達式,我嘗試了下面的負向lookahead,但它也沒有工作。 – user1638055

0

繼去年後編輯您正在尋找替換字符串中的一個反向參考:

pattern: ^.*?([A-Z][A-Z] \d\d).*$ 
replace: $1 

也許相當於該

pattern: ^.*?(?=[A-Z][A-Z] \d\d)|(?<=[A-Z][A-Z] \d\d).*$ 
replace: **nothing**