支持Unicode的Java正则表达式?

标签 java regex unicode cjk

为了匹配 A 到 Z,我们将使用正则表达式:

[A-Za-z]

如何让正则表达式匹配用户输入的 utf8 字符?例如像环保部这样的中文单词

最佳答案

您正在寻找的是 Unicode 属性。

例如\p{L} 是任何语言的任何字母

所以匹配这样一个中文单词的正则表达式可能类似于

\p{L}+

这样的属性有很多,更多详情请看regular-expressions.info

另一种选择是使用修饰符

Pattern.UNICODE_CHARACTER_CLASS

在 Java 7 中有一个新属性 Pattern.UNICODE_CHARACTER_CLASS 启用预定义字符类的 Unicode 版本 see my answer here for some more details and links

你可以这样做

Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);

\w 将匹配来自任何语言的所有字母和所有数字(当然还有一些组合字符,如 _)。

关于支持Unicode的Java正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894122/

相关文章:

python - 在 Python 中获取匹配字符串的特定模式后出现的数字

java - 当服务器 JIT 激活时,什么会导致我的代码运行速度变慢?

java - 如何从ListView项目中获取TextView?

javascript - 从长字符串中提取两项的正则表达式

python - 正则表达式捕获文本中的数字

java - java.util.regex.Pattern 的正则表达式

java - JNI : Convert Java String to Code Page 1252

CSS :before superscript "6"?

sql - 列数据类型中 BYTE 和 CHAR 的区别

java - wait/notify 和 Condition 如何管理线程