如何在Java正则表达式匹配中使用IsAlphabetic二进制属性?
我正在使用此模式检查字符串是否以冒号前面至少2个字母字符开头:
string.matches("^\\p{IsAlphabetic}{2,}:")
但我得到以下exception:
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)
即使Pattern类的规范声明:
二进制属性使用前缀Is指定,如IsAlphabetic中所示。 Pattern支持的二进制属性是
- 拼音
- 表意的
- 信件
- …
和Unicode脚本,块,类别和二进制属性列表的类
\p{IsAlphabetic} An alphabetic character (binary property)
使用java 1.8工作并返回true。
String s = "äö:"; System.out.println(s.matches("^\\p{IsAlphanumeric}{2,}:"));
请注意,Java 1.7中可用的表单 – Alpha,IsAlpha – 不一定包含不是US-ASCII的字符。 这返回false:
String s = "äö:"; System.out.println(s.matches("^\\p{IsAlpha}{2,}:"));
但请注意,这适用于1.7并返回true:
String s = "äö:"; Pattern pat = Pattern.compile( "^\\p{Alpha}{2,}:", Pattern.UNICODE_CHARACTER_CLASS ); Matcher mat = pat.matcher( s ); System.out.println(mat.matches());
- 为什么我们在连接数据库时使用Class.forName(“oracle.jdbc.driver.OracleDriver”)?
- glassfish v4 ClassNotFoundException
- Java日志记录:Log4j Version2.x:显示最终客户端调用方法(不是中间日志记录助手方法)
- 在Spring Boot服务上运行有限数量的线程
- 重写BeanPropertyRowMapper以支持JodaTime DateTime
- 在Java应用程序中使用C源代码的最简单方法是什么?
- IntelliJ可以自动创建装饰器类吗?
- 如何消除大尺寸java swing标签的差距
- 将浮点值舍入到java中最接近的整数的最有效方法是什么?