Java正则表达式中的POSIX字符等价物

时间:2011-07-07 15:12:11

标签: java regex posix-ere character-properties

我想在Java中使用这样的正则表达式:[[=a=][=e=][=i=]]

但Java不支持POSIX类[=a=], [=e=] etc

我该怎么做?更确切地说,有没有办法不使用US-ASCII?

3 个答案:

答案 0 :(得分:11)

Java确实支持posix character classes。语法不同,例如:

\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}

答案 1 :(得分:5)

引自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-\x1F\x7F]
\p{XDigit}  A hexadecimal digit: [0-9a-fA-F]
\p{Space}   A whitespace character: [ \t\n\x0B\f\r]

答案 2 :(得分:1)

here

复制
  

Java不支持POSIX括号   表达式,但确实支持POSIX   使用\ p的字符类   运营商。虽然\ p语法是   借用了Unicode的语法   属性,Java中的POSIX类   只匹配ASCII字符   如下所示。班级名称是   区分大小写。与POSIX不同   语法只能在一个内部使用   括号表达式,Java的\ p可以   用于内外支架   表达式。