6

我指的是此处列出的测试工具http://docs.oracle.com/javase/tutorial/essential/regex/test_harness.html

我对该类所做的唯一更改是该模式的创建方式如下:

Pattern pattern = 
        Pattern.compile(console.readLine("%nEnter your regex(Pattern.CANON_EQ set): "),Pattern.CANON_EQ);

正如http://docs.oracle.com/javase/tutorial/essential/regex/pattern.html上的教程所建议的,我将模式或正则表达式作为a\u030A和字符串作为匹配,\u00E5但它以未找到匹配结束。我看到两个琴弦都是一个小盒子'a',顶部有一个环。

我没有正确理解用例吗?

4

1 回答 1

7

Pattern.CANON_EQ您看到的行为与标志无关。

从控制台读取的输入与 Java 字符串文字不同。当用户(可能是您,测试此标志)\u00E5在控制台中键入时,读取的结果字符串console.readLine等同于"\\u00E5",而不是“å”。自己看:http: //ideone.com/lF7D1

至于Pattern.CANON_EQ,它的行为与描述的完全一样:

Pattern withCE = Pattern.compile("^a\u030A$",Pattern.CANON_EQ);
Pattern withoutCE = Pattern.compile("^a\u030A$");
String input = "\u00E5";

System.out.println("Matches with canon eq: "
    + withCE.matcher(input).matches()); // true
System.out.println("Matches without canon eq: "
    + withoutCE.matcher(input).matches()); // false

http://ideone.com/nEV1V

于 2012-04-22T05:22:14.237 回答