मिलान करने के लिए A से Z, हम regex का उपयोग होगा:जावा रेगेक्स?
[a-zA-z]
regex उपयोगकर्ता द्वारा दर्ज UTF8 वर्णों का मिलान करने के लिए कैसे अनुमति देने के लिए? उदाहरण के लिए चीनी शब्द जैसे 环保 部
मिलान करने के लिए A से Z, हम regex का उपयोग होगा:जावा रेगेक्स?
[a-zA-z]
regex उपयोगकर्ता द्वारा दर्ज UTF8 वर्णों का मिलान करने के लिए कैसे अनुमति देने के लिए? उदाहरण के लिए चीनी शब्द जैसे 环保 部
जो आप खोज रहे हैं वह यूनिकोड गुण हैं।
उदा। \p{L}
इस तरह के एक चीनी शब्द मिलान करने के लिए की तरह कुछ हो सकता है किसी भी
तो भाषा एक regex से पत्र के किसी भी प्रकार है
\p{L}+
कई ऐसे गुण होते हैं, कर रहे हैं के लिए अधिक विवरण देखने के regular-expressions.info
एक अन्य विकल्प संशोधक
Pattern.UNICODE_CHARACTER_CLASS
उपयोग करने के लिए जावा 7 वहाँ मैं में है सा नया संपत्ति Pattern.UNICODE_CHARACTER_CLASS
कि पूर्वनिर्धारित चरित्र वर्गों के यूनिकोड संस्करण सक्षम हो see my answer here for some more details and links
आप इस
Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);
और \w
किसी भी भाषा से सभी पत्र और सभी अंक से मेल खाएंगे (और निश्चित रूप से कुछ शब्द की तरह कुछ कर सकता है _
जैसे अक्षरों को जोड़ना)।
व्यक्तिगत पात्रों से मेल खाने के लिए, आप उन्हें केवल एक चरित्र वर्ग में, या तो अक्षर के रूप में या \u03FB
वाक्यविन्यास के माध्यम से शामिल कर सकते हैं।
जाहिर है आप अक्सर विचारधारात्मक भाषाओं में सभी अनुमत पात्रों को सूचीबद्ध नहीं कर सकते हैं। रेगेक्स को उनके प्रकार या कोड ब्लॉक के अनुसार यूनिकोड वर्णों का इलाज करने के लिए, विभिन्न अन्य एस्केप समर्थित हैं जिन्हें here परिभाषित किया गया है। "यूनिकोड समर्थन" अनुभाग को विशेष रूप से Character
वर्ग और यूनिकोड मानक के संदर्भ में देखें।
उपयोगकर्ता उदाहरण द्वारा दर्ज किए गए एकाधिक utf8 वर्णों को मैट करने के लिए कैसे देखें 环保 部, क्योंकि उपयोगकर्ता होगा यादृच्छिक रूप से वर्णों की संख्या दर्ज करना – cometta
यह कई लैटिन वर्णों से मेल खाता है: '[az] +' या '[az] {3}' या यहां तक कि '[az] {2,10} '। एकमात्र चीज यह है कि आप उस चरित्र वर्ग में क्या अनुमति देते हैं जो क्वांटिफ़ायर लागू होता है। –
char
प्रकार पर काम करता हैchar
प्रकार है परोक्ष UTF-16यूनिकोड वर्ण और UTF-8 (नियंत्रण वर्ण, विराम चिह्न, प्रतीकों, पत्र, आदि सहित) के सभी वर्णन कर सकते हैं के सार्वभौमिक सेट है आप के बारे में अधिक विशिष्ट होना होगा आप क्या शामिल करना चाहते हैं और आप क्या चाहते हैं बाहर करने के लिए चींटी। जावा नियमित अभिव्यक्ति category द्वारा कोडपॉइंट से मेल खाने के लिए \p{category}
वाक्यविन्यास का उपयोग करती है। श्रेणियों के list के लिए Unicode standard देखें।
यदि आप विचारधाराओं के अनुक्रम में शब्दों को पहचानना और अलग करना चाहते हैं, तो आपको एक अधिक परिष्कृत एपीआई देखने की आवश्यकता होगी। मैं BreakIterator
प्रकार से शुरू करूंगा।
NLS समर्थन का पता और अंग्रेजी विशेष वर्ण स्वीकार करने से बचने के लिए, हम पैटर्न नीचे का उपयोग कर सकते हैं ...
[एक-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());
जावा 7 में, यूनिकोड regex 'UNICODE_CHARACTER_CLASS' झंडा ओ के साथ समर्थित है आर एम्बेड करने योग्य '(? यू)'। Http://stackoverflow.com/questions/4304928/unicode-equivalents-for-w-and-b-in-java-regular-expressions –