繁体   English   中英

Java 正则表达式中的 POSIX 字符等效项

[英]POSIX character equivalents in Java regular expressions

我想在 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.htmlA822C7A53EZ

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]

这里复制

Java 不支持 POSIX 括号表达式,但支持使用 \p 运算符的 POSIX 字符类。 尽管 \p 语法是从 Unicode 属性的语法中借用的,但 Java 中的 POSIX 类仅匹配 ASCII 字符,如下所示。 class 名称区分大小写。 与只能在括号表达式内部使用的 POSIX 语法不同,Java 的 \p 可以在括号表达式内部和外部使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM