【发布时间】:2010-12-15 10:00:53
【问题描述】:
要匹配英文单词,我会使用模式[a-zA-Z]+。
有什么方法可以编写一个匹配任何语言的单词的正则表达式?即使单词包含ščžé... 之类的字符也是如此。我不知道世界上可能存在哪些角色,所以我认为纯粹的[a-zA-Zščžé]+ 不够...
有没有更好的方法来写这个表达式?
【问题讨论】:
要匹配英文单词,我会使用模式[a-zA-Z]+。
有什么方法可以编写一个匹配任何语言的单词的正则表达式?即使单词包含ščžé... 之类的字符也是如此。我不知道世界上可能存在哪些角色,所以我认为纯粹的[a-zA-Zščžé]+ 不够...
有没有更好的方法来写这个表达式?
【问题讨论】:
根据Pattern javadoc,\p{L}+ 应该匹配一系列 Unicode 字母(即在 Unicode 中具有类别 L 的字符)。这可能是最广泛的定义,尽管您可能想查看unicode categories list 来决定是否要添加其他类别(例如,有一个称为“数字字母”)。
【讨论】:
通常你会使用一些 unicode 字符范围
[a-zA-Z\u0000-\u1111]
或
[a-zA-Zš-é]
因此,您必须查看 unicode 字符代码并添加目标语言中的任何特殊字符范围
【讨论】:
\p{L}+。学到东西了! :)