नियमित अभिव्यक्ति \ p {L} और \ p {N}


106

मैं नियमित अभिव्यक्ति के लिए नया हूं और निम्नलिखित नियमित अभिव्यक्ति दी गई है:

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

मुझे पता है * का मतलब क्या है और | का अर्थ है "या" और वह \ N से बच जाता है।

लेकिन मुझे नहीं पता कि क्या \p{L}और क्या \p{N}मतलब है। मैंने इसके लिए Google खोज की है, परिणाम के बिना ...

क्या कोई मेरी मदत कर सकता है?


मैंने इसे Googled भी किया, लेकिन मुझे यह परिणाम मिला ।
एमसी सम्राट

जवाबों:


160

\p{L}श्रेणी "पत्र" में एकल कोड बिंदु से मेल खाता है।
\p{N}किसी भी स्क्रिप्ट में किसी भी तरह के संख्यात्मक चरित्र से मेल खाता है।

स्रोत: regular-expressions.info

यदि आप नियमित अभिव्यक्ति के साथ बहुत काम करने जा रहे हैं, तो मेरा सुझाव है कि उस साइट को बुकमार्क करें, यह बहुत उपयोगी है।


तेजी से उत्तर के लिए thx :)। लेकिन regex फिर 10 मैच नहीं होना चाहिए? मैं एक ऑनलाइन regex मिलान करने की कोशिश की है: regexpal.com
Diemauerdk

@ user1093774: मुझे नहीं लगता कि regexpal समर्थन करता है \p{}, लेकिन हाँ, यह मेल खाना चाहिए।
सेरेब्रस

1
यह सिंटैक्स आधुनिक यूनिकोड रेगेक्स कार्यान्वयन के लिए विशिष्ट है, जिसे सभी व्याख्याकार मान्यता नहीं देते हैं। आप सुरक्षित रूप से {p {L} को {a-zA-Z} (ascii अंकन) या {\ w} (perl / vim संकेतन) से बदल सकते हैं; और {p {N} द्वारा {0-9} (ascii) या {\ d} (पर्ल / विम)। यदि आप उन सभी से मेल खाना चाहते हैं, तो बस करें: {a-zA-Z0-9} + या {\ _ \
_

16
राफेल, मैं 'न सहमत हैं कि आप सुरक्षित रूप से जगह ले सकता है \p{L}के द्वारा {a-zA-Z}{a-zA-Z}, उदाहरण के लिए, किसी भी उच्चारण चरित्र से मेल नहीं खाएगा, जैसे कि é, जिसका उपयोग फ्रांसीसी में किया जाता है। तो ये केवल सुरक्षित रूप से बदली हैं यदि आपको यकीन है कि आप केवल अंग्रेजी प्रसंस्करण करेंगे, और कुछ नहीं।
रॉल्फ

क्या यह कोड बिंदु या कोड इकाई से मेल खाता है? stackoverflow.com/a/27331885/4928642
Qwertiy

30

ये यूनिकोड संपत्ति शॉर्टकट हैं ( \p{L}यूनिकोड अक्षरों के लिए, \p{N}यूनिकोड अंकों के लिए)। वे नेट, पर्ल, जावा, PCRE, एक्सएमएल, XPath, JGSoft, रूबी के द्वारा समर्थित हैं (1.9 और ऊपर) और PHP ( 5.1.0 के बाद से )

किसी भी दर पर, यह एक बहुत ही अजीब रेक्स है। वर्ण वर्ग के पर्याप्त होने पर आपको विकल्प का उपयोग नहीं करना चाहिए:

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

xml में इसका रेगेक्स - मैंने खुद रेगेक्स पर कोई दबाव नहीं डाला है :)
Diemauerdk

इस तथ्य के अलावा कि कोष्ठक पर कब्जा करने का उपयोग किया गया था, आरईएस वास्तव में एक ही चीज (अच्छी तरह से, किसी भी अनुकूलन आरई इंजन \p{…}में जो पहले स्थान पर भागने के क्रम शैली का समर्थन करता है) को संकलित करेगा ।
डोनाल्ड फेलो

यह XRegExp यूनिकोड प्लगइन जैसा दिखता है। यदि ऐसा है, तो किसी भी भाषा में कोई भी अल्फा-न्यूमेरिक होगा
टिम

धन्यवाद, सहायक भाषाओं को सूचीबद्ध करना उपयोगी था, इस बात से अनजान थे कि वहां सीमाएं थीं (अधिकांश regex'y चीजें "सार्वभौमिक" हैं)।
होल्डऑफ ह्यूंगर

@ हैल्डऑफ ह्यूंगर: इससे दूर, दुर्भाग्य से। इसीलिए RegexBuddy जैसे टूल्स का मार्केट है। नियमित-expressions.info/refbasic.html पर एक नज़र डालें , आप regex जायके के बीच सूक्ष्म और नहीं-तो-सूक्ष्म अंतर पर चकित होंगे ...
टिम Pietzcker
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.