2012-11-07 17 views
7

Python hariç, this question çözümlerine ihtiyacım var! Python'un regex'lerinde POSIX ifadelerinin kullanılmasını sağlayan Python, as apparently için regex kitaplığını yüklemeyi denedim, ancak yine de [:alpha:] sınıfında Unicode karakterleri içermediğini tahmin ediyorum. Ör:Python'da aksanlı karakterler regex ile nasıl eşleştirilir?

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

Ben eşleştirmek istediğiniz Please work blåbær and NOW stop

DÜZENLEME:

EDIT 2 Python 2.7 kullanıyorum: denedim aşağıdaki:

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

Tam olarak istediğim şey değil (ilk ASCII olmayan karakterden sonra parçayı eşleştirmek istiyorum), b en azından, karakterden öncekinden daha fazla eşleşti. İstediğimin geri kalanıyla eşleşmesi için ne yapmalıyım?

DÜZENLEME 3: Ben herhangi bir "kelime" karakterleri eşleştirmek istemiyorum; "kelime" ile a-z, A-Z, boşluk ve kelime karakterlerinin aksanlı varyasyonlarını kastediyorum. Umarım fikrimi anladım;

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

bunun işe yaradığını tahmin: Yani sadece bu bir komut dosyası için Python 3 kullanmaya çalıştı:

lets match força, but stop before that comma 

gibi bir ifadeyle içinde sadece lets match força

DÜZENLEME 4 eşleştirmek istediğiniz Python 3'ün büyük bir kısmı için, (aynı zamanda kesinlikle istemediğim) rakamlar ve alt çizgilerle eşleşmesi dışında. Bunu düzeltmenin herhangi bir yolu, Python 2 veya 3?

cevap

2

Hangi python sürümünü kullandığınız belli değil. 2.x kullanırsanız, belki bir unicode sorun olabilir. Daha fazla işaretçi için bu post'a bakın ve sorunuzu daha ayrıntılı incelemek için güncellemekten çekinmeyin.

Im i doğru unicode temsilcileri için vurgulu karakteri dönüştürmek olamaz, oldukça surprissed ...

ama orada geçici çözüm:

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

veya

re.search(re.compile('\D+', re.UNICODE), ur'Please work blåbær and NOW stop 123').group(0) 
İlgili konular