POSIX символьные эквиваленты в регулярных выражениях Java - PullRequest
5 голосов
/ 07 июля 2011

Я хотел бы использовать регулярное выражение, подобное этому в Java: [[=a=][=e=][=i=]].

Но Java не поддерживает классы POSIX [=a=], [=e=] etc.

Как я могу это сделать? Точнее, есть ли способ не использовать US-ASCII?

Ответы [ 3 ]

12 голосов
/ 07 июля 2011

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}
5 голосов
/ 07 июля 2011

Цитирование из 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]
1 голос
/ 07 июля 2011

Скопировано из здесь

Java не поддерживает скобочные выражения POSIX, но поддерживает классы символов POSIX с использованием оператора \ p.Хотя синтаксис \ p заимствован из синтаксиса для свойств Unicode, классы POSIX в Java соответствуют только символам ASCII, как указано ниже.Имена классов чувствительны к регистру.В отличие от синтаксиса POSIX, который может использоваться только внутри выражения в скобках, Java \ p может использоваться внутри и вне выражений в скобках.

...