दिलचस्प पोस्ट
विस्तृत से लेकर लंबे स्वरूप तक डेटा.फ्रेम को फिर से स्थानांतरित करना LINQ से इकाईयां विधि 'इंट32 पार्स (सिस्टम। स्ट्रिंग)' विधि को पहचानती नहीं है, और इस पद्धति को स्टोर अभिव्यक्ति में अनुवाद नहीं किया जा सकता है मुख्य से पहले सेगमेंटेशन फॉल्ट प्रॉपर्टी 'submit' ऑब्जेक्ट # <HTMLFormElement> फ़ंक्शन नहीं है django आयात त्रुटि – कोई मॉड्यूल कोर। प्रबंधन नहीं है PHP: क्या mysql_real_escape_string उपयोगकर्ता इनपुट को साफ करने के लिए पर्याप्त है? Resettable जावा टाइमर क्या इंटरफेस जावा में ऑब्जेक्ट क्लास से विरासत में आते हैं क्या html_entity_decode पर ENT_HTML5, ENT_HTML401, … संशोधक क्या करते हैं? एक नेस्टेड क्लास टेम्प्लेट का आंशिक स्पेशलाइजेशन क्यों अनुमत है, जबकि पूरा नहीं है? Xcode 6 प्रत्येक रन के बाद आईओएस 8 सिम्युलेटर में मेरे ऐप की निर्देशिका का नाम रखता है। Android सूचीदृश्य विभक्त सी, सी ++, जावा, और सी में प्री एंड पोस्ट इंचार्ज ऑपरेटर व्यवहार इकाई फ़्रेमवर्क / SQL के लिए SQL: छोड़ें और ले जाएं जांच करें कि घटना मानव द्वारा शुरू हो रही है या नहीं

.Net regex: शब्द चरित्र \ w क्या है?

आसान सवाल:
शब्द चरित्र \w में सी #, .net के लिए पैटर्न क्या है?

मेरा पहला सोचा था कि यह [A-Za-z0-9_] मेल खाता है और दस्तावेज़ीकरण मुझसे कहता है:

 वर्ण वर्ग विवरण पैटर्न मिलान
 \ w किसी भी \ w "I", "D", "A", "1", "3" से मेल खाता है
                    शब्द चरित्र  "आईडी A1.3" में

जो बहुत उपयोगी नहीं है
और \w भी मैच äöü लगता है, भी। और क्या? क्या कोई बेहतर (सटीक) परिभाषा उपलब्ध है?

वेब के समाधान से एकत्रित समाधान ".Net regex: शब्द चरित्र \ w क्या है?"

प्रलेखन से :

वर्ड कैरेक्टर: \ w

\w किसी भी शब्द चरित्र से मेल खाता है एक शब्द का चरित्र निम्न तालिका में सूचीबद्ध किसी भी यूनिकोड श्रेणियों का सदस्य है।

  • Ll (पत्र, लोअरकेस)
  • Lu (पत्र, अपरकेस)
  • Lt (पत्र, शीर्षक केस)
  • Lo (पत्र, अन्य)
  • Lm (पत्र, संशोधक)
  • Nd (संख्या, दशमलव अंक)
  • Pc (विराम चिह्न, कनेक्टर)
    • इस श्रेणी में दस वर्ण शामिल हैं, जिनमें से सबसे ज्यादा इस्तेमाल किया गया है, जिसमें लोलाइन वर्ण (_), यू + 005 एफ है

यदि ECMAScript- अनुरूप व्यवहार निर्दिष्ट है, तो \w [a-zA-Z_0-9]

यह भी देखें

  • यूनिकोड वर्ण डाटाबेस
  • 'विरामचिन्ह, कनेक्टर' श्रेणी में यूनिकोड वर्ण

असल में यह उन सभी चीजों से मेल खाता है जिन्हें विभिन्न लिपियों में पत्र की सहज परिभाषा माना जा सकता है – प्लस अंडरस्कोर और कुछ अन्य ओडबॉल

आप निम्न छोटे पावरशेल स्निपेट के साथ एक पूरी सूची (कम से कम बीएमपी के लिए) पा सकते हैं:

 0..65535 | ?{([char]$_) -match '\w'} | %{ "$_`: " + [char]$_ } 

इसलिए कुछ एक्सचेंजों में '\ w' का प्रयोग करते हुए .net के बराबर है:

 public static class Extensions { /// <summary> /// The word categories. /// </summary> [NotNull] private static readonly HashSet<UnicodeCategory> _wordCategories = new HashCollection<UnicodeCategory>( new[] { UnicodeCategory.DecimalDigitNumber, UnicodeCategory.UppercaseLetter, UnicodeCategory.ConnectorPunctuation, UnicodeCategory.LowercaseLetter, UnicodeCategory.OtherLetter, UnicodeCategory.TitlecaseLetter, UnicodeCategory.ModifierLetter, UnicodeCategory.NonSpacingMark, }); /// <summary> /// Determines whether the specified character is a word character (equivalent to '\w'). /// </summary> /// <param name="c">The c.</param> public static bool IsWord(this char c) => _wordCategories.Contains(char.GetUnicodeCategory(c)); } 

मैंने इसे एक एक्सटेंशन विधि के रूप में लिखा है जिसे किसी भी चरित्र c पर उपयोग करना आसान है, बस c.IsWord() जो true होगा अगर चरित्र एक शब्द चरित्र है रेगेक्स की तुलना में यह काफी तेज होनी चाहिए।

दिलचस्प बात यह है कि यह एनएटी विनिर्देश से मेल नहीं खाता है, वास्तव में '\ w' मैच 938 'नॉन-स्पेसिंग मार्क' वर्ण, जिनका उल्लेख नहीं किया गया है।

कुल मिलाकर यह 65,535 अक्षरों में से 49,760 से मेल खाता है, इसलिए वेब पर दिखाए जाने वाले सरल रेगेक्स अपूर्ण होते हैं।