2016-09-18 2 views
1

을 가진 대체, 나는정규식 - 단어가 플러스 괄호 파이썬에서

text = re.sub(r'\b%s\b' % word, "replace_text", text) 

일부 텍스트 단어를 대체 할 노력하고 있어요. 을 사용하여 전체 단어가 일치하는 경우에만 대체하려면 text.replace을 수행하는 대신 re을 사용하십시오. 단어에 +, (, [ etc과 같은 문자가있을 때 문제가 발생합니다. 예 : +91xxxxxxxx.

정규식은 +을 하나 이상의 와일드 카드로 취급하고 오류가 발생하여 중단됩니다. sre_constants.error: nothing to repeat. (의 경우도 마찬가지입니다.

조금 주위를 검색 한 후 수정 사항을 찾을 수 있습니다. 방법이 있습니까?

답변

2

그냥 re.escape(string)를 사용

word = re.escape(word) 
text = re.sub(r'\b{}\b'.format(word), "replace_text", text) 

그것은 탈출의 형태 (예를 들어, \+ 대신 +의)와 정규 표현식 패턴에서 특별한 의미로 모든 중요한 문자를 대체합니다.


그냥 (!) 참고 : 백분율로 서식은 (%) 문자는 사용되지 않으며 문자열의 .format() 방법으로 대체되었다.

관련 문제