1

Java 正規表現ライブラリ ベンチマーク(ベンチマーク ソース コード: regtest.java ) で icu4j ライブラリのUnicodeSetクラスを見つけました。次のコードでテストしようとしています。UnicodeSet には、PCRE と完全に互換性のない独自のパターン構文があるようです。

String exp = "^[abc]x?c$";

com.ibm.icu.text.UnicodeSet uniset = new com.ibm.icu.text.UnicodeSet("[" + exp + "]");
java.util.regex.Pattern regex = java.util.regex.Pattern.compile(exp);
System.out.println(uniset.containsAll("ac")); //Returns false
System.out.println(regex.matcher("ac").matches()); //Returns true

上記の式を UnicodeSet で正しく動作するように書き換えるにはどうすればよいですか?

ICU4J (49.1) ライブラリを使用しています。

4

1 に答える 1

1

UnicodeSet正規表現ではありません。あなたの式[^[abc]x?c$]は多くのコードポイントに一致しますが、その中にはaありcません。

http://unicode.org/cldr/utility/list-unicodeset.jspは、オンラインで UnicodeSet を操作する方法です。

あなたが言及したベンチマークページはこれを考慮する必要があります.

于 2012-09-11T16:07:28.547 に答える