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: [a-z]
p{Upper}   An upper-case alphabetic character:[A-Z]
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-x1Fx7F]
p{XDigit}  A hexadecimal digit: [0-9a-fA-F]
p{Space}   A whitespace character: [ tnx0Bfr]

从这里复制

Java不支持POSIX括号表达式,但不支持POSIX字符类使用p操作符。尽管p语法是借用了Unicode的语法属性,Java中的POSIX类只匹配ASCII字符为下面的指示。类名如下大小写敏感的。不像POSIX语法,该语法只能在括号表达式,Java的p可以是用于支架内外表达式。

最新更新