The*_*aul 14 java regex unicode character-class character-properties
StackOverflow上有许多问题和答案,假设"字母"可以在正则表达式中匹配[a-zA-Z].然而,对于Unicode,还有更多的字符,大多数人会认为是一个字母(所有希腊字母,Cyrllic ..还有更多.Unicode定义了许多块,每个块可能有"字母".
Java定义 为像alpha字符这样的东西定义了Posix类,但是它被指定为仅使用US-ASCII.预定义的字符类定义要包含的单词[a-zA-Z_0-9],这也排除了许多字母.
那么如何正确匹配Unicode字符串呢?是否有其他图书馆可以做到这一点?
eLo*_*ato 15
在这里你有一个非常好的解释:
http://www.regular-expressions.info/unicode.html
一些提示:
"遗憾的是,Java和.NET不支持\X(还).\P{M}\p{M}*用作替代.要匹配任意数量的字素,请使用(?:\P{M}\p{M}*)+而不是\X+."
"在Java中,正则表达式令牌\uFFFF只匹配指定的代码点,即使您打开规范等效.但是,相同的语法\uFFFF也用于将Unicode字符插入Java源代码中的文字字符串.Pattern.compile("\u00E0")将匹配单个代码点和双码点编码à,虽然Pattern.compile("\\u00E0")只匹配单码点版本.请记住,当将正则表达式编写为Java字符串文字时,必须转义反斜杠.前Java代码编译正则表达式à,而后者编译正则表达式编译\u00E0,取决于你在做什么,差异可能是显著".
你在谈论Unicode类别,比如字母吗?这些由表单的正则表达式匹配\p{CAT},其中"CAT"是类似于L任何字母的类别代码,或类似于Lu大写或Lt标题大小写的子类别.
| 归档时间: |
|
| 查看次数: |
17534 次 |
| 最近记录: |