如何正确使用java正则表达式中的反向引用?

时间:2014-06-07 17:02:42

标签: java regex back

我创建了一个简单的演示来查看反向引用是如何工作的。它是

Pattern pattern = Pattern.compile("([0-9]+)([,=]+)\\2\\1");
    Matcher matcher = pattern.matcher("2==2 5,,,,5");
    while (matcher.find()) {
        String group = matcher.group();
        System.out.println("group=" + group);
    }

输出结果为:

group=2==2
group=5,,,,5

有人能解释为什么5,,,,5与反向引用匹配\\ 2?

1 个答案:

答案 0 :(得分:1)

Matcher#group()

  

返回上一个匹配项匹配的输入子序列。

在第二个循环中,它返回字符串中的第二个匹配项。那是

5,,,,5

([0-9]+)匹配5([,=]+)匹配,,\\2匹配,,\\1匹配5