A से Z का मिलान करने के लिए, हम regex का उपयोग करेंगे:
[ए-ज़-ज़]
उपयोगकर्ता द्वारा दर्ज किए गए utf8 वर्णों से मिलान करने के लिए रेगेक्स को कैसे अनुमति दें? उदाहरण के लिए चीनी शब्द जैसे 环保 环保
जवाबों:
आप जो देख रहे हैं, वह यूनिकोड के गुण हैं।
जैसे \p{L}
किसी भी भाषा का कोई भी अक्षर
तो ऐसे चीनी शब्द का मिलान करने के लिए एक रेगेक्स कुछ इस तरह हो सकता है
\p{L}+
ऐसे कई गुण हैं, अधिक जानकारी के लिए नियमित रूप से देखें-expressions.info
एक अन्य विकल्प संशोधक का उपयोग करना है
Pattern.UNICODE_CHARACTER_CLASS
जावा 7 में एक नई संपत्ति है Pattern.UNICODE_CHARACTER_CLASS
जो पूर्वनिर्धारित चरित्र वर्गों के यूनिकोड संस्करण को सक्षम करता है, कुछ और विवरणों और लिंक के लिए यहां मेरा उत्तर देखें
आप ऐसा कुछ कर सकते हैं
Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);
और \w
किसी भी भाषा के सभी अक्षरों और सभी अंकों से मेल खाता होगा (और निश्चित रूप से कुछ शब्द जैसे वर्णों का संयोजन _
)।
व्यक्तिगत पात्रों से मेल खाने के लिए, आप उन्हें केवल वर्ण वर्ग में या तो शाब्दिक रूप से या \u03FB
वाक्य रचना के माध्यम से शामिल कर सकते हैं।
जाहिर है कि आप अक्सर सभी अनुमत चरित्रों को वैचारिक भाषाओं में सूचीबद्ध नहीं कर सकते हैं। रेगेक्स को उनके प्रकार या कोड ब्लॉक के अनुसार यूनिकोड वर्णों का इलाज करने के लिए, विभिन्न अन्य एस्केप समर्थित हैं जो यहां परिभाषित हैं । अनुभाग "यूनिकोड समर्थन" को देखें, विशेष रूप से Character
वर्ग और यूनिकोड मानक को ही देखें।
[a-z]+
या [a-z]{3}
या यहाँ तक कि [a-z]{2,10}
। केवल एक चीज अलग है जिसे आप उस वर्ण वर्ग में अनुमति देते हैं जो क्वांटिफायर पर लागू होता है।
एनएलएस समर्थन को संबोधित करने और अंग्रेजी विशेष चरित्र को स्वीकार करने से बचने के लिए, हम नीचे दिए गए पैटर्न का उपयोग कर सकते हैं ...
[a-zA-Z0-9 \ u0080- \ u9fff] * +
UTF कोड बिंदु संदर्भ के लिए: http://www.utf8-chartable.de/unicode-utf8-table.pl
सांकेतिक टुकड़ा:
String vowels = "అఆఇఈఉఊఋఌఎఏఐఒఓఔౠౡ";
String consonants = "కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళవశషసహ";
String signsAndPunctuations = "కఁకంకఃకాకికీకుకూకృకౄకెకేకైకొకోకౌక్కౕకౖ";
String symbolsAndNumerals = "౦౧౨౩౪౫౬౭౮౯";
String engChinesStr = "ABC導字會";
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU = Pattern
.compile("[a-zA-Z0-9 \\u0c00-\\u0c7f]*+");
System.out.println(ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU.matcher(vowels)
.matches());
Pattern ALPHANUMERIC_AND_SPACE_PATTERN_CHINESE = Pattern
.compile("[a-zA-Z0-9 \\u4e00-\\u9fff]*+");
Pattern ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN = Pattern
.compile("[a-zA-Z0-9 \\u0080-\\u9fff]*+");
System.out.println(ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN.matcher(engChinesStr)
.matches());
char
प्रकार पर काम करता हैchar
प्रकार परोक्ष UTF-16 हैयूनिकोड वर्णों का सार्वभौमिक समूह है और UTF-8 इसका पूरा वर्णन कर सकता है (नियंत्रण वर्ण, विराम चिह्न, प्रतीक, पत्र, आदि सहित) आपको जो आप शामिल करना चाहते हैं और जिसे आप बाहर करना चाहते हैं, उसके बारे में आपको अधिक विशिष्ट होना पड़ेगा। जावा नियमित अभिव्यक्तियाँ श्रेणी के\p{category}
अनुसार कोडपॉइंट से मिलान करने के लिए सिंटैक्स का उपयोग करती है । श्रेणियों की सूची के लिए यूनिकोड मानक देखें ।
यदि आप विचारधाराओं के अनुक्रम में शब्दों को पहचानना और अलग करना चाहते हैं, तो आपको एक अधिक परिष्कृत एपीआई देखने की आवश्यकता होगी। मैं BreakIterator
टाइप से शुरू करूंगा ।
UNICODE_CHARACTER_CLASS
ध्वज या एम्बेड करने योग्य के साथ समर्थित है(?U)
। देखें stackoverflow.com/questions/4304928/…