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.