java - java"无效的转义序列( 有效的是b R"')"语法错误

  显示原文与译文双语对照的内容

我编写了代码来匹配 extenstion. ncx的文件


 pattern = Pattern.compile("$(|/)[a-zA-Z0-9_]/.ncx");


 Matcher matcher = pattern.mather("sample.ncx");



这显示了一个无效的转义序列( 。有效的是 b t n f r " ' ) 语法错误 Pattern 。 我怎么修复它。

时间: 原作者:


Pattern p = Pattern.compile("[/]([a-zA-Z0-9_]+.ncx)$");


Matcher m = p.matcher("sample.ncx");


if (m.find())


{


 System.out.printf("The filename is '%s'%n", m.group(1));


}



输出:


The filename is 'sample.ncx'



在字符串( 或者到多行模式中一行的末尾)的末尾,$锚定 MATCH 。 它属于你的正规表达式的而不是 beginning 。

[/] 是一个字符类,即或者反斜杠。 因为反斜杠在 正规表达式 和字符串文本中都有特殊含义,所以它必须是双重转义。 正斜杠不存在,但不需要转义。

如果你的名字是一个或者多个字母,那么你只需要匹配一个字符,就可以找到一个。

你的正规表达式 中第二个斜杠没有意义,但是你需要一个反斜杠来转义点,当然,反斜杠必须被转义为Java字符串格式。

在开始时,我从交替 ( | ) 到前导斜杠的字符类,所以你的正规表达式 中的括号不再需要。 相反,我将它们用于捕获实际文件名,只是为了演示如何完成。

原作者:
...