2015-01-20 28 views
0

我想匹配答案塊(粗體)。如何編寫匹配答案塊的正則表達式?

A)我已經II B)III IV已經 C)III IV已經 d)III IV已經 E)III IV已經

到目前爲止我寫此。

(?:[A|B|C|D|E]\)) 

它匹配此

A)我已經II B) III已經IV C) III已經IV d) III已經IV E) III已經IV

但是當我追加(*)它它匹配

A)I ve II B)III ve IV C)III ve IV D)III ve IV E)III ve IV

我如何反向匹配我寫的正則表達式?

我需要反向匹配文本,因爲它可以是此塊上的所有內容。 A)例如B)你好C)世界d)再見E)別的東西

謝謝

http://regexr.com/3a8fq

+2

你在用什麼語言? – hwnd 2015-01-20 19:53:21

+0

[如何與regex「逆向匹配」可能的重複?](http://stackoverflow.com/questions/164414/how-to-inverse-match-with-regex) – 2015-01-20 19:55:13

回答

2

我會考慮使用基於lookahead的正則表達式。

(?s)[A-E]\)\s*((?:(?!\s*[A-E]\)).)+) 
+0

但是字符串必須是單行,否則它不起作用。有沒有解決方法? – 2015-01-21 09:09:42

+0

請舉例說明 – hwnd 2015-01-21 13:39:14

0

,你也可以做

/I(II)? ve I(I|V)/ 

如果你的語言支持反向前看符號:

?!(?:[A|B|C|D|E]\)) 
+0

只要答案總是採用該格式,當然,但我猜他們可能不會,並且想法是關閉標籤。 – 2015-01-20 19:51:48

+0

謝謝,但我忘了提及它可以放在這個塊上。 A)例子B)你好C)世界D)再見E)別的 – 2015-01-20 19:51:59

2

這應該是訣竅:

(?<=[A-E]\)).*?(?= [A-E]\)|$)