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是一种在线玩 UnicodeSets 的方法。

您提到的基准页面应该考虑这一点。

于 2012-09-11T16:07:28.547 回答