存储来自正则表达式的反向引用以供以后使用

时间:2013-12-17 20:43:31

标签: java regex backreference

如果我有,

String str = "11"; 
Pattern p = Pattern.compile("(\\d)\\1"); 
Matcher m = p.matcher(str); 

如何存储以后使用\ 1的结果?例如,我想做,

String str = "123123"; 
Pattern p = Pattern.compile("(\\d)\\1"); 
Matcher m = p.matcher(str);
String dependantString = //make this whatever was in group 1 of the pattern.

这可能吗?

1 个答案:

答案 0 :(得分:2)

您需要先调用Matcher#find,然后再调用Matcher#group(1)

String str = "123123"; 
Pattern p = Pattern.compile("(\\d+)\\1"); 
Matcher m = p.matcher(str);
if (m.find())
    System.out.println( m.group(1) ); // 123

PS:您的正则表达式还需要进行一些更正才能使用\\d+代替\\d