我正在尝试在Java正则表达式中使用反向引用,但似乎我没有以正确的方式执行它并且无法使其工作。我希望能够匹配由2个相同引号包围的字符串部分,比如查找字符串是否包含 "whatever"
或 'whatever'
。
Pattern p = Pattern.compile("(\"|\')whatever\1");
Matcher m = p.matcher("'whatever'loremipsumblah");
System.out.println(m.find()); // always returns false
...但似乎后面的引用根本不起作用,因为匹配器找不到匹配模式的字符串的任何部分。我希望你们能够帮助我,因为我肯定会陷入困境:|
答案 0 :(得分:3)
在数字'1'之前转义反斜杠。否则,序列“\ 1”被解释为字符U + 0001的八进制转义。
Pattern p = Pattern.compile("(\"|\')whatever\\1");
答案 1 :(得分:0)
也许你应该尝试“lookingAt”而不是“find”。像这样:
Pattern p = Pattern.compile("(\"|\')whatever\\1");
Matcher m = p.matcher("\"whatever\"");
if (m.lookingAt())
System.out.println(m.group());