为了理解反向引用,我们先对解释Java正则表达式里面的组。组在正则表达式中意味着将多个字符作为一个单独的单元,通过将字符放在()中,每个()代表一个组。每一组都有一个行号,从1开始。Matcher类的groupCount方法返回模式(Pattern)关联Matcher实例组的个数。第0组指向整个表达式。
2、反向引用非常方便,因为它允许重复一个模式(pattern),无需再重写一遍。我们可以使用\#(#是组号)来引用前面已定义的组。比如一个文本以abc开始,接着为xyz,紧跟着abc,对应的正则表达式可以为“abcxyzabc”,也可以使用反向引用重写正则表达式,“"(abc)xyz\1"”,\1表示第一组(abc)。\2表示第二组,\3表示第三组,以此类推。
例子:
([\u4e00-\u9fa5]{1})([\u4e00-\u9fa5]{1})的((\\1|\\2))
可以用来匹配这类句子:吃饭的饭;吃饭的吃;睡觉的谁;.......