2010-01-14 21 views
12

UTF-8 harflerini ve basamaklarını, tire işaretini (-) eşleşen, ancak alt çizgi (_) ile eşleşmeyen düzenli bir ifadeye ihtiyacım var başarısız bu saçma girişimleri çalıştı:RegEx: w - "_" + "-" in UTF-8

  • ([\w-^_])+
  • ([\w^_]-?)+
  • (\w[^_]-?)+

\w kestirme f veya [A-Za-z0-9_], ancak u değiştirici kümesi varsa UTF-8 karakterleriyle de eşleşir.

Bu kişi bana yardım edebilir mi?

+1

Lütfen "UTF-8 harfleri" hakkında spesifik olun - sadece İngilizce karakterleri istemediğinizi onaylayabilir misiniz? –

+0

@meder: İngilizce ** ve ** aksanlı/yabancı karakterler istiyorum. –

cevap

17

bu deneyin: Daha sonra w \ (veya tire) olarak kodlanmış ve bir şey üzerinde basit bir maç karakteri sadece eşleşmiş olduğunu garanti sıfır genişlikli olan ileriye dönük sahiptir gelmez

(?:[\w\-](?<!_))+ 

alt çizgi değil.

Aksi halde almak olabilir bu bir:

daha set-tabanlı yaklaşım

Tamam (büyük harf W unutmayın)

(?:[^_\W]|-)+ 

, ben php'nin lezzet unicode ile eğlenceli bir sürü vardı PCREs: D Peekaboo kullanılabilir basit bir çözüm olduğunu söylüyor:

[\p{L}\p{N}\-]+ 

p {L} (Mektubu gibi not nitelendirir şey unicode maçları \: bir kelime değil karakteri bu nedenle, hiç bir altçizgi yoktur), \ p {N} bir sayıya benzeyen her şeyle eşleşir (romen rakamları ve daha egzotik şeyler dahil).
\ - sadece kaçan bir tire. "

[\p{L}\p{N}\p{Pd}]+ 

: Kesinlikle gerekli olmamasına rağmen, ben böylece aşağıdaki sürümüne sebebiyet veren unicode farklı tire düzinelerce vardır, unutmayın ... o karakter sınıflarında tire kaçmak için bir nokta yapmak eğilimindedir Pd ", eksi-dash-thingy dahil olmak üzere, ancak bunlarla sınırlı olmamak üzere, Noktalama Tire'dir. (Not, yine burada alt çizgi yok).

+0

, \ hipen'i içermez. – codaddict

+0

@dionadar - bu benim için aksanlı karakterlerle eşleşmiyor. –

+1

@codadict Bildiğim kadarıyla, tire işareti \ w 'de dahil değildir - ve eğer olsa bile, bunu belirtmek zarar vermez;) –

3

Kullandığınız dilden emin değilim, ancak PERL'de aşağıdakileri yazabilirsiniz: [[: alnum:] -] + doğru yerel ayarlandığında.

+0

Bilmek güzel ama PHP (PCRE motoru) kullanıyorum. –

+0

PHP ve Rubular'da (Ruby) denediniz, bkz. Http://www.rubular.com/regexes/12922 ve http://www.rubular.com/regexes/12923. –

+0

Orada küçük bir hatayı düzelttim. –