Java で次のような正規表現を使用したいと思います[[=a=][=e=][=i=]]
。
しかし、Java は POSIX クラスをサポートしていません[=a=], [=e=] etc
。
これどうやってするの?より正確には、US-ASCII を使用しない方法はありますか?
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-\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 はブラケット式の内部および外部で使用できます。