ste*_*ema 106
您正在寻找的是Unicode属性.
例如\p{L}
,任何语言的任何一种信件
所以匹配这样一个中文单词的正则表达可能是这样的
\p{L}+
Run Code Online (Sandbox Code Playgroud)
有许多这样的属性,有关更多详细信息,请参阅regular-expressions.info
另一种选择是使用修饰符
Pattern.UNICODE_CHARACTER_CLASS
在Java 7中,有一个新属性Pattern.UNICODE_CHARACTER_CLASS
可以启用Unicode版本的预定义字符类,可以在此处查看我的答案以获取更多详细信息和链接
你可以这样做
Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);
Run Code Online (Sandbox Code Playgroud)
并\w
匹配任何语言的所有字母和所有数字(当然还有一些组合字符的单词_
).
要解决NLS支持并避免接受英文特殊字符,我们可以使用以下模式...
[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());
Run Code Online (Sandbox Code Playgroud)