Normal ifade \ p {L} ve \ p {N}


106

Normal ifadeler konusunda yeniyim ve şu normal ifade verildi:

(\p{L}|\p{N}|_|-|\.)*

* Ne anlama geldiğini biliyorum ve | "veya" anlamına gelir ve bu \ kaçar.

Ama ne \p{L}ve ne \p{N}anlama geldiğini bilmediğim . Google'da arama yaptım, sonuçsuz ...

Biri bana yardım edebilir mi?


Google'da araştırdım ama bu sonucu aldım .
MC İmparator

Yanıtlar:


160

\p{L}"harf" kategorisindeki tek bir kod noktasıyla eşleşir.
\p{N}herhangi bir komut dosyasındaki herhangi bir sayısal karakterle eşleşir.

Kaynak: normal-expressions.info

Normal ifadelerle çok çalışacaksanız, o siteye yer işareti koymanızı öneririm, bu çok yararlıdır.


hızlı cevap için teşekkürler :). Ancak normal ifade 10 ile eşleşmemeli mi? Çevrimiçi bir normal ifade eşleştiriciyi denedim: regexpal.com
Diemauerdk

@ user1093774: Regexpal'ın desteklediğini sanmıyorum \p{}, ama evet, eşleşmeli.
Cerbrus

1
Bu sözdizimi, tüm yorumlayıcıların tanımadığı modern Unicode normal ifade uygulamasına özgüdür. \ P {L} 'yi güvenli bir şekilde {a-zA-Z} (ascii gösterimi) veya {\ w} (perl / vim gösterimi) ile değiştirebilirsiniz; ve \ p {N} ile {0-9} (ascii) veya {\ d} (perl / vim). Hepsini eşleştirmek istiyorsanız, şunu yapın: {a-zA-Z0-9} + veya {\ w \ d} +
Rafael Beckel

16
Rafael ben 'yok güvenle yerine kabul \p{L}tarafından {a-zA-Z}. {a-zA-Z}örneğin, étüm Fransızca'da kullanılanlar gibi herhangi bir aksanlı karakterle eşleşmeyecektir . Dolayısıyla, bunlar yalnızca yalnızca ingilizce işleyeceğinizden eminseniz, başka hiçbir şey yapmayacağınızdan emin olduğunuzda güvenli bir şekilde değiştirilebilir.
Rolf

Kod noktası veya kod birimiyle eşleşiyor mu? stackoverflow.com/a/27331885/4928642
Qwertiy

30

Bunlar Unicode özellik kısayollarıdır ( \p{L}Unicode harfler \p{N}için, Unicode rakamları için). .NET, Perl, Java, PCRE, XML, XPath, JGSoft, Ruby (1.9 ve üstü) ve PHP ( 5.1.0'dan beri ) tarafından desteklenirler.

Her neyse, bu çok garip bir normal ifadedir. Bir karakter sınıfı yeterli olduğunda, değişim kullanmamalısınız:

[\p{L}\p{N}_.-]*


Yakalama parantezlerinin kullanılması dışında, RE'ler aslında aynı şeyi derleyecektir ( \p{…}ilk etapta kaçış dizisi stilini destekleyen herhangi bir optimize edilmiş RE motorunda ).
Donal Fellows

XRegExp unicode eklentisine benziyor. eğer öyleyse, herhangi bir dilde herhangi bir alfanümerik olurdu
Tim

Teşekkürler, destekleyici dilleri listelemek faydalı oldu, orada sınırlamalar olduğunun farkında olmadan (normal ifadelerin çoğu "evrensel" dir).
HoldOffHunger

@HoldOffHunger: Maalesef bundan çok uzak. Bu nedenle RegexBuddy gibi araçlar için bir pazar var. Düzenli -ifadeler.info/
Tim Pietzcker
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.