2009-11-04 25 views
8

Python modülünü kullanarak, sayısal karakterlerle ("[0-9]" ile eşleştirilebilen) eşleşen "\ w" (alfanümerik karakterlerle eşleşen) eşdeğerinin nasıl karşılığı alınır?Python regexp ile sayısal chars olmadan alfabetik chars eşleştirilir?

Temel gereksinimin, sayısal karakterler olmadan ("[0-9]" ile eşleştirilen) herhangi bir karakterle (tüm unicode varyasyonları dahil) eşleşmesi gerektiğine dikkat edin.

Son bir not olarak, daha büyük bir regexp'nin parçası olduğu için bir regexp'e ihtiyacım var.

Aşağı yönler eşleşmemelidir.

DÜZENLEME: Bu konuda uyarılar için teşekkürler "w \" tarafından ve bu sorunu giderir seçilmiş çözüm için eşleştirilmelerinden yüzden hiç düşünmedim

  • , devlet vurgulamaktadır.

cevap

24

:

(?=\D)\w 

Pars içinde girilir, bunların birden eşleştirmek için karakter grubunu Bu (ya bir rakam ya da bir alfanümerik değil). Bunları istemiyorsanız, bu olumsuz kümeye alt çizgi ekleyin.

Bana sorarsan biraz bükülmüş, ama işe yarıyor. Lookahead alternatifinden daha hızlı olmalı.

+0

Güzel, +1 benden. Bunu düşünmemiştim. – Tomalak

+0

harika bir fikir, bu diğer desenler ve diğer normal ifade uygulamalarıyla yeniden kullanılabilir. – vaab

5
(?!\d)\w 

sonra \w bir rakam değildir ve bir konum. Basamakları etkin bir şekilde iptal eder ancak \w aralığına olumsuz bir bakış açısı sağlayarak izin verir.

aynı olumlu görünüm önden ve \D olarak ifade edilebilir

: Sen [^\W\d] istiyorum

(?:(?!\d)\w)+ 
+3

Bunun altını da içerdiğini unutma. –

+0

OP, alt çizgi hakkında bir şey söylemedi. Bu nasıl alakalı? – Tomalak

+1

Sadece OP bunu beklemiyorsa. Çözümünü beğendim. –

İlgili konular