如何在Java正则表达式匹配中使用IsAlphabetic二进制属性?
我使用此模式检查字符串是否以冒号前面至少2个字母字符开头:
string.matches("^\\p{IsAlphabetic}{2,}:")
但我遇到以下异常:
java.util.regex.PatternSyntaxException: Unknown character property name {Alphabetic} near index 16
^\p{IsAlphabetic}{2,}:
^
at java.util.regex.Pattern.error(Pattern.java:1730)
at java.util.regex.Pattern.charPropertyNodeFor(Pattern.java:2454)
at java.util.regex.Pattern.family(Pattern.java:2429)
at java.util.regex.Pattern.sequence(Pattern.java:1848)
at java.util.regex.Pattern.expr(Pattern.java:1769)
at java.util.regex.Pattern.compile(Pattern.java:1477)
at java.util.regex.Pattern.<init>(Pattern.java:1150)
at java.util.regex.Pattern.compile(Pattern.java:840)
at java.util.regex.Pattern.matches(Pattern.java:945)
at java.lang.String.matches(String.java:2102)
即使模式类的规范规定:
Binary properties are specified with the prefix Is, as in IsAlphabetic. The supported binary properties by Pattern are
- Alphabetic
- Ideographic
- Letter
- ...
以及Unicode脚本、块、类别和二进制属性的类部分 列表
\p{IsAlphabetic} An alphabetic character (binary property)
# 1 楼答案
使用Java1.8工作并返回true
请注意,Java 1.7中可用的表单(Alpha、IsAlpha)不一定包含US-ASCII以外的字符。这将返回false:
但请注意,这在1.7中起作用,并返回true: