2014-03-05 3 views
0

나는 텍스트 키릴 단어의 전체 모양을 대체하기 위해 노력하고있어 :정규 표현식 :의 re.sub(), B와 키릴 문자

# -*- coding: utf-8 -*- 
import re 
S = u"раз Два трИ".lower() 
print re.sub(ur"\bдва\b", u"четыре", S, re.U) 

인쇄 "раз два три"동안 "раз четыре три" 예상된다. 동시에 검색()와 findall은()에서

잘 작동 :

print re.search(ur"\bдва\b", S, re.U).group(0) 
print re.findall(ur"\bдва\b", S, re.U) 

그래서의 re.sub()와 함께 유일한 문제는

라틴 문자는 잘 작동 :

S = u"one Two threE".lower() 
print re.sub(ur"\btwo\b", u"four", S, re.U) 

다음과 같은 방법을 시도하면 공백을 삼킨다 (그리고 추한 것처럼 보임 :

print re.sub(u"[^а-яё\d]два[^а-яё\d]", u"четыре", S) 

A는 작동하지 않는 공간을 유지하려고 :

print re.sub(u"(?:[^а-яё\d])(два)(?:[^а-яё\d])", u"четыре", S) 

너무 도움이되지 않습니다 교체 :

S = u"раз Два трИ".lower() 
print S 
S.replace(u"два", u"четыре") 
print S 

인쇄 "раз два три"두 번.

답변

1

당신은 키워드 인수 flags와 플래그를 전달해야합니다

In [3]: S = u"раз Два трИ".lower() 
In [5]: print re.sub(ur"\bдва\b", u"четыре", S, flags=re.U) 
раз четыре три