2011-05-11 12 views
9

मैं कुछ नियमित अभिव्यक्तियों में आया जिसमें [^\\p{L}] शामिल हैं। मैं समझता हूँ कि यह एक यूनिकोड श्रेणी के कुछ फार्म का उपयोग कर रहा है, लेकिन जब मैं the documentation जाँच की है, मैं केवल निम्नलिखित "L" श्रेणियों पाया:{एल} यूनिकोड श्रेणी क्या है?

Lu Uppercase letter UPPERCASE_LETTER 
Ll Lowercase letter LOWERCASE_LETTER 
Lt Titlecase letter TITLECASE_LETTER 
Lm Modifier letter  MODIFIER_LETTER 
Lo Other letter  OTHER_LETTER 

इस संदर्भ में L क्या है?

उत्तर

12

इस लिंक से लिया: http://www.regular-expressions.info/unicode.html

Unicode Character Properties अनुभाग देखें।

\ p {एल} श्रेणी "अक्षर" में एक कोड बिंदु से मेल खाता है। यदि आपका इनपुट स्ट्रिंग को यू +0061 यू + 0300, के रूप में एन्कोड किया गया है तो यह उच्चारण के बिना मेल खाता है। यदि इनपुट को U + 00E0 के रूप में एन्कोड किया गया है, तो यह उच्चारण के साथ मेल खाता है। का कारण यह है कि कोड कोड U + 0061 (ए) और यू +00E0 (à) दोनों श्रेणी "अक्षर" में हैं, जबकि यू + 0300 श्रेणी "चिह्न" में है।

+0

धन्यवाद और आपको भी +1। @Ned Batchelder के उत्तर पर मेरी टिप्पणी/प्रश्न पर आपकी टिप्पणी की सराहना की गई है। – uTubeFan

+0

अकेले लिंक एक स्वीकार्यता है। – uTubeFan

+0

"एल" श्रेणी के "आधिकारिक" संदर्भ के लिए, यहां देखें: http://unicode.org/reports/tr18/#General_Category_Property – CodeClimber

2

मैं इसके बारे में किसी भी स्पष्ट उल्लेख देख पा रहे हैं नहीं है, लेकिन this page पर एक उदाहरण इंगित करता है कि \\p{L} कोई पत्र का अर्थ है:

Categories may be specified with the optional prefix Is: Both \p{L} and \p{IsL} denote the category of Unicode letters. 
+0

यही मैंने सोचा, लेकिन फिर निम्नलिखित रेगेक्स प्रतिस्थापन (एक स्थान के साथ) ** सबकुछ ** ** ** ** एक पत्र क्यों नहीं है? 'String.replaceAll (" [^ \\ p {L}] "," ") ' – uTubeFan

+2

@uTubeFan: देखें कि आप'^\\ p {L} 'में * अस्वीकरण * का उपयोग कर रहे हैं। तो जब मैं इस तरह कुछ करता हूं "परीक्षण एडीडी ^^%! ~ + _)"। ReplaceAll ("[^ \\ p {एल}]", "") "तो यह 'टेस्ट अक्ड' आउटपुट करेगा। इसके विपरीत यदि आप इस तरह कुछ करते हैं "परीक्षण एकेडी ^^%! ~ + _)"। ReplaceAll ("[\\ p {एल}]", ""); 'तो आउटपुट '^^% होगा ! ~ + _) ' – Favonius

+0

@ फेवोनीस धन्यवाद! तो, क्या मैं इस से निष्कर्ष निकाल सकता हूं कि '^%! ~ + _' ** ** ** अक्षर नहीं माना जाता है? (मैं मूल रूप से सभी गैर अक्षरों को प्रतिस्थापित करने के लिए देख रहा हूं (एक एस्ट्रोफ़े ''' '' '' '' '' '' '' '' – uTubeFan