2012-11-07 3 views
7

파이썬을 제외한 this question에 대한 솔루션이 필요합니다! Python의 regexes에서 POSIX 표현식을 사용할 수있게 해주는 Python을위한 정규식 라이브러리 인 as apparently을 설치하려했지만 그럼에도 불구하고 [:alpha:] 클래스의 유니 코드 문자는 포함되어 있지 않습니다. 예 :악센트 부호가있는 문자를 파이썬에서 정규식과 일치시키는 방법은 무엇입니까?

>>> re.search(r'[[:alpha:] ]+','Please work blåbær and NOW stop 123').group(0) 
'Please work bl' 

내가 그것을 일치시킬 Please work blåbær and NOW stop

편집 : 나는

편집이 파이썬 2.7을 사용하고 :을 해봤 다음

>>> re.search(re.compile('[\w ]+', re.UNICODE),'Please work blåbær and NOW stop 123').group(0) 
'Please work bl\xc3' 

내가 원했던 것은 아니다. (첫 번째 비 ASCII 문자 뒤의 부분도 일치시키고 싶다.) b 최소한 그것은 이전보다 더 성격에 매치했다. 내가 원하는 나머지 부분과 일치 시키려면 여기에서 무엇을해야합니까?

EDIT 3 : "단어"가 아닌 문자는 일치하지 않습니다. "단어"란 의미는 a-z, A-Z, 공백 및 단어 문자의 액센트가있는 변형을 의미합니다. 나는 내 아이디어를 얻었 으면 좋겠다.

>>> re.search(re.compile('[\w ]+', re.UNICODE),'lets match força, but stop before that comma').group(0) 
'lets match força' 

나는 그것이 작동 같아요 그래서 난 그냥이 하나의 스크립트 파이썬 3를 사용하려고 :

lets match força, but stop before that comma 

같은 문구에 난 단지 lets match força

EDIT 4 일치시킬 파이썬 3에서 대부분은 (필자가 원하지 않는) 숫자와 일치한다는 것을 제외하고는 밑줄을 긋는다. 이 문제를 해결할 수있는 방법은 파이썬 2 또는 3?

답변

2

사용중인 파이썬 버전이 명확하지 않습니다. 2.x를 사용한다면 유니 코드 문제가있을 수 있습니다. 추가 포인터를 보려면 post을보고 질문을 업데이트하여 자세히 설명하십시오.

임 내가 적절한 유니 코드 표현으로 악센트 문자를 변환 할 수없는, 매우 surprissed ...

하지만이 있습니다 해결 방법 :

re.search(re.compile('((\w+\s)|(\w+\W+\w+\s))+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 

또는

re.search(re.compile('\D+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 
관련 문제