Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 模式中的规范等价_Java_Pattern Matching - Fatal编程技术网

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正确的更正。我已经用一个演示来充实我的答案,希望能说明逃跑的区别。谢谢。现在继续学习教程:)