java is alphabetic,我如何使用IsAlphabetic二进制属性在Java正则表达式匹配?

I'm using this pattern to check if a string starts with at least 2 alphabetic characters in front a colon:

string.matches("^\\p{IsAlphabetic}{2,}:")

but I get the following exception thrown at me:

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.(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)

even though the specification of the Pattern classes states:

Binary properties are specified with the prefix Is, as in IsAlphabetic. The supported binary properties by Pattern are

Alphabetic

Ideographic

Letter

...

and the section Classes for Unicode scripts, blocks, categories and binary properties

lists

\p{IsAlphabetic} An alphabetic character (binary property)

解决方案

Works and returns true using java 1.8.

String s = "äö:";

System.out.println(s.matches("^\\p{IsAlphanumeric}{2,}:"));

Note that the forms available in Java 1.7 - Alpha, IsAlpha - do not necessarily include characters not in US-ASCII . This returns false:

String s = "äö:";

System.out.println(s.matches("^\\p{IsAlpha}{2,}:"));

But note that this works in 1.7 and returns true:

String s = "äö:";

Pattern pat = Pattern.compile( "^\\p{Alpha}{2,}:",

Pattern.UNICODE_CHARACTER_CLASS );

Matcher mat = pat.matcher( s );

System.out.println(mat.matches());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值