我在UnicodeSet中找到了icu4j库的Java Regular expression library benchmark类(基准测试源代码:regtest.java)。我正在尝试使用以下代码进行测试。似乎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)库。
最佳答案
UnicodeSet
不是正则表达式。您的表达式[^[abc]x?c$]
与许多代码点匹配,但是a
和c
不在其中。
http://unicode.org/cldr/utility/list-unicodeset.jsp是一种在线使用UnicodeSet的方法。
您提到的基准页面应该考虑这一点。