Java 模式中的规范等价
我指的是此处列出的测试线束 我对该类所做的唯一更改是按如下方式创建模式:Java 模式中的规范等价,java,pattern-matching,Java,Pattern Matching,我指的是此处列出的测试线束 我对该类所做的唯一更改是按如下方式创建模式: Pattern pattern = Pattern.compile(console.readLine("%nEnter your regex(Pattern.CANON_EQ set): "),Pattern.CANON_EQ); 正如在上的教程所建议的,我将模式或正则表达式作为a\u030A输入,并将字符串作为\u00E5匹配,但它以未找到匹配项结束。我看到两根弦都是一个小盒子“a”,上面有一个戒指
Pattern pattern =
Pattern.compile(console.readLine("%nEnter your regex(Pattern.CANON_EQ set): "),Pattern.CANON_EQ);
正如在上的教程所建议的,我将模式或正则表达式作为a\u030A
输入,并将字符串作为\u00E5
匹配,但它以未找到匹配项结束。我看到两根弦都是一个小盒子“a”,上面有一个戒指
我没有正确理解用例吗?您看到的行为与
模式无关。CANON_EQ
标志
从控制台读取的输入与Java字符串文本不同。当用户(可能是您,正在测试此标志)在控制台中键入\u00E5
时,console.readLine
读取的结果字符串相当于“\\u00E5”
,而不是“å”。你自己看看:
至于模式.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
是和否。字符串就是字符串就是字符串,但是从控制台读取的字符串不需要进一步转义,而字符串文本确实需要转义,这是正确的。@AdamMihalcin正确的更正。我已经用一个演示来充实我的答案,希望能说明逃跑的区别。谢谢。现在继续学习教程:)