2014-09-17 2 views
1

이라는 단어와 그 연속 된 단어를 제거하고 싶습니다.
환자 1 이상 이벤트 및 박사 Bodendieck 환자 1 우유
약물의 책임을 용납하지 않는 것을 예로 설명했다
일치하는 단어와 연속 된 단어를 제거하는 정규식

입력

재정 공개 박사 쿠 체르의 예에 대한
로그 및 환자 준수. 내가 모든 텍스트가 굵게

출력으로 강조 제거 할 위의 입력 패턴에서



환자 1 한 부작용 및 의

재정 공개는 환자를 가정한다 1은 우유를 용납하지 않습니다.
약물 책임 성 로그 및 환자 준수.

내 이해에 따르면
/[(D|d)r]\s*(?=\w+)

을 사용하고있는 패턴
[(D | D) R] "박사"를 일치해야 또는 "박사"
\ s *은 공백과 일치해야합니다.
(? = \ w +])은 바로 연속되는 단어와 일치해야합니다. 위의 패턴은 내가 정규식을 형성 안돼서 일치 점점되지 그러나 패턴
http://regex101.com/r/eU5yT8/2

참조.

답변

1

그것은해야 내 mistake.thanks을 이해하는 데 도움이됩니다 : 당신이 (?=...)에 포장 할 때

re.sub(r'\b[Dd]r\s+\w+', '', txt) 

는 미리 봐하지만 the documentation 같이를 소비하지 않습니다 Isaac (?=Asimov)경기'Isaac ' 다음에 오는 경우에만 'Asimov'이옵니다. 즉, 'Asimov' 일치하지 않습니다 의미

>>> re.findall(r'Isaac (?=Asimov)', 'Isaac Asimov') 
['Isaac '] 

또한, 당신은 의미 중 하나 D 또는 dr, 또는 대안 (Dr|dr) 다음에있는 [Dd]r이 필요합니다.

>>> re.sub(r'[Dd]r\s*\w+', '', 'xdr test') 
'x' 

당신은 \s+이 필요합니다, 또는 그렇지 않으면 dr 일치합니다 : (우리는 같은 단어가있을 경우)

\b 그렇지 않으면,이 단어의 끝에 dr 일치합니다, 단어 경계를 지정합니다 단어 중간에 :

>>> re.sub(r'\b[Dd]r\s*\w+', '', 'drug') 
'' 
관련 문제