Jakarta ORO
文字クラスの"\w"と"[a-zA-Z_0-9]"って動作が同じだと思っていたけれど、違うのですね。
テストに使用したクラス
package test; import org.apache.oro.text.perl.Perl5Util; /** * Perl5Utilの"\w"文字クラスをテストするクラスです。 * * @author manhole * @version $Id$ */ public class Perl5UtilTest { /** * テストメソッドです。 */ public static void main(String[] args) { // テスト対象の入力文字列 String sInput = "abcあいう"; // Perl互換の正規表現オブジェクト Perl5Util perl = new Perl5Util(); // "\w"の場合 if (perl.match("m!\\w*!", sInput)) { // マッチ文字列を出力 System.out.println("\\w -> " + perl.group(0)); } // "[a-zA-Z0-9]"の場合 if (perl.match("m![a-zA-Z_0-9]*!", sInput)) { // マッチ文字列を出力 System.out.println("[a-zA-Z_0-9] -> " + perl.group(0)); } } }
実行結果
\w -> abcあいう [a-zA-Z_0-9] -> abc
どちらも"abc"になると思っていたんだけれどなー。
確認したバージョンは2.0.7です。