2014-10-03 18 views
0

我想匹配以下圖案:匹配括號內和<b></b>標籤中的所有大寫字母單詞。匹配標籤內的所有指定字

例子:

(ABC) 'must extract none 
<b>(ABC) 'must extract none 
<b>(ABC)(CDE)(EFG)</b> 'must extract ABC, CDE and EFG 
<b> shr (ABC) апаd (CDE) lgsgs </b> 'must extract ABC and CDE 
<b>A</b>(ABCA)<b>(ABCB)</b> 'must extract only ABCB 
<b>A</b>(ABCA)<b>dada(ABCB)wsg</b> 'must extract only ABCB 
<b>AB</b>(ABCA)<b>BC</b>(ABCB) 'must extract none 

我試着用下面的模式,但它只是第一次出現匹配:

"(<b>(?:(?!<\/?b>).)*?\()([A-Z]+)(\)(?:(?!<\/?b>).)*<\/b>)" 
+0

嘗試測試/在http://regex101.com/建立你的正則表達式,有在他們的庫中有很多預定義的模式。 – bodi0 2014-10-03 07:18:07

回答

2

你可以試試下面的正則表達式。

(?:[A-Z]+(?=\)))(?=(?:(?!<\/?b>).)*<\/b>) 
  • (?:[A-Z]+(?=\)))只有當它的後面關閉)支架這將匹配一個或多個大寫字母。

  • (?=(?:(?!<\/?b>).)*<\/b>)而且ASLO它必須遵循的任何字符,但不打開或關閉<b>標籤的零次或多次,然後必須後跟關閉</b>標籤。

DEMO

OR

只要這樣,

(?:[A-Z]+(?=\)))(?=[^<>]*<\/b>) 

DEMO

相關問題