2012-08-10 3 views
4

질문 제목과 같습니다.regex를 사용하여 텍스트에서 특정 단어를 찾아 모든 현상을 반환하는 방법?

저는 파이썬과 정규 표현식에 익숙하지 않습니다. 따라서 단락에서 특정 단어를 검색하고 모든 색인을 표시해야합니다. 예를 들어

:

단락은 :

이 테스트 텍스트 테스트 테스트 및 테스트하는 데 사용된다.

단어 :

시험

알고리즘은 상기 제 3 개 단어 시험 겹치지 OCCURENCES의 인덱스를 반환한다 (그러나 테스트입니다. 왜냐하면 부분 문자열뿐만 아니라 전체 단어를 검색한다는 의미이기 때문입니다.

같은 단락이 "단어"의 또 다른 예 :

테스트 및

알고리즘은 테스트 및의 2 개 항목을 반환해야합니다. 나는 이전과 다음에, 그 전체 단어의 패턴을 찾기 위해 몇 가지 정규 표현식을 사용해야합니다 생각

내가 re.finditer 같은 것을 사용해야하지만이 보인다 발견 인터넷 검색 후 같은 . , ; ? -

같은 구두점 있습니다 나는 천국 가서 올바른 길을 찾지 못했습니다. 도와주세요, 미리 감사드립니다. ;)

답변

6

예, finditer입니다. 일치 색인을 찾으려면 start()을 사용하십시오.


예 :

import re 

a="This is a testing text and used to test and test and test." 
print [m.start() for m in re.finditer(r"\btest\b", a)] 
print [m.start() for m in re.finditer(r"\btest and\b", a)] 

출력 :

[35, 44, 53]
[35, 44]

2

정규 표현식에서 단어 경계 앵커 \b을 사용하여 단어 경계에서 시작/끝과 일치하도록 지정하십시오.

>>> sentence = "This is a testing text and used to test and test and test." 
>>> pattern = re.compile(r'\btest\b') 
>>> [m.start() for m in pattern.finditer(sentence)] 
[35, 44, 53] 
관련 문제