Java正则表达式中的POSIX字符等价物
我想在Java中使用这样的正则表达式: [[=a=][=e=][=i=]]
。
但Java不支持POSIX类[=a=], [=e=] etc
。
我怎样才能做到这一点? 更确切地说,有没有办法不使用US-ASCII?
Java确实支持posix字符类 。 语法不同,例如:
\p{Lower} \p{Upper} \p{ASCII} \p{Alpha} \p{Digit} \p{Alnum} \p{Punct} \p{Graph} \p{Print} \p{Blank} \p{Cntrl} \p{XDigit} \p{Space}
引自http://download.oracle.com/javase/1.6.0/docs/api/java/util/regex/Pattern.html
POSIX字符类(仅限US-ASCII)
\p{Lower} A lower-case alphabetic character: [az] \p{Upper} An upper-case alphabetic character:[AZ] \p{ASCII} All ASCII:[\x00-\x7F] \p{Alpha} An alphabetic character:[\p{Lower}\p{Upper}] \p{Digit} A decimal digit: [0-9] \p{Alnum} An alphanumeric character:[\p{Alpha}\p{Digit}] \p{Punct} Punctuation: One of !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ \p{Graph} A visible character: [\p{Alnum}\p{Punct}] \p{Print} A printable character: [\p{Graph}\x20] \p{Blank} A space or a tab: [ \t] \p{Cntrl} A control character: [\x00-\x1F\x7F] \p{XDigit} A hexadecimal digit: [0-9a-fA-F] \p{Space} A whitespace character: [ \t\n\x0B\f\r]
从这里复制
Java不支持POSIX括号表达式,但使用\ p运算符支持POSIX字符类。 尽管\ p语法是从Unicode属性的语法中借用的,但Java中的POSIX类仅匹配ASCII字符,如下所示。 类名称区分大小写。 与只能在括号表达式中使用的POSIX语法不同,Java的\ p可以在括号表达式内外使用。
- 测试DAO时出错:sun.reflect.generics.reflectiveObjects.TypeVariableImpl无法强制转换为java.lang.Class
- characteristic.getDescriptor()返回null