【发布时间】:2019-09-08 13:19:51
【问题描述】:
看着Javadoc for java.util.regex.Pattern
\p{Alnum}一个字母数字字符:[\p{IsAlphabetic}\p{IsDigit}]
似乎每个匹配\p{IsAlphabetic} 的字符也应该匹配\p{Alnum}
但是,当字符有重音时,情况似乎并非如此。例如,以下断言失败:
assertEquals("é".matches("\\p{IsAlphabetic}+"),"é".matches("\\p{Alnum}+"));
对于其他带有重音符号的字符(例如ą、ó、ł、źż)也会发生同样的情况。所有匹配 \p{IsAlphabetic}+ 但不匹配 \p{Alnum}+
我是否误解了 Javadoc?或者这是文档或实现中的错误?
【问题讨论】:
-
\p{Alnum}仅匹配 ASCII 字母和数字。使用Pattern.UNICODE_CHARACTER_CLASS选项使其完全支持Unicode。 -
@WiktorStribiżew 成功了。非常感谢!
-
如果您阅读您引用的文档页面,您将看到
\p{Alnum}=[\p{Alpha}\p{Digit}]和\p{Alpha}=[\p{Lower}\p{Upper}]和\p{Lower}=[a-z]和\p{Upper}= @ 987654343@