我正在尝试在Java正则表达式中使用反向引用,但似乎我没有以正确的方式进行操作,因此无法正常工作。我希望能够匹配用2个相同的引号引起来的字符串部分,例如查找字符串是否包含"whatever"'whatever'

然后,我编写了以下代码:

Pattern p = Pattern.compile("(\"|\')whatever\1");
Matcher m = p.matcher("'whatever'loremipsumblah");
System.out.println(m.find());   // always returns false


...但是似乎反向引用根本不起作用,因为匹配器找不到匹配模式的字符串的任何部分。我希望你们能够帮助我,因为我肯定被困住了:|

最佳答案

在数字“ 1”之前转义反斜杠。否则,序列“ \ 1”将被解释为字符U + 0001的八进制转义。

Pattern p = Pattern.compile("(\"|\')whatever\\1");

10-07 19:00
查看更多