匹配两个相同字符之间的字符串

时间:2009-09-29 23:25:45

标签: java regex

我正在尝试在Java正则表达式中使用反向引用,但似乎我没有以正确的方式执行它并且无法使其工作。我希望能够匹配由2个相同引号包围的字符串部分,比如查找字符串是否包含 "whatever" 'whatever'

然后我写了下面的代码:

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

...但似乎后面的引用根本不起作用,因为匹配器找不到匹配模式的字符串的任何部分。我希望你们能够帮助我,因为我肯定会陷入困境:|

2 个答案:

答案 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());