2014-10-03 1 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

답변

2

당신은 아래 정규식을 시도 할 수 있습니다. 이 닫는 ) 브래킷 다음의 유일한 경우

(?:[A-Z]+(?=\)))(?=(?:(?!<\/?b>).)*<\/b>) 
  • (?:[A-Z]+(?=\)))는 하나 이상의 대문자와 일치합니다.

  • (?=(?:(?!<\/?b>).)*<\/b>) 그리고 끄트머리

    모든 문자 뒤에 아니라 개구 또는 <b> 종료 태그의 0 번 이상 그리고 그것은 폐쇄 </b> 태그 와야되어야한다.

DEMO

하거나 같은

,

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

DEMO

관련 문제