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

标签 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.

这可能吗?

最佳答案

您需要先调用 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

关于java - 存储来自正则表达式的反向引用供以后使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20644265/

相关文章:

java - 如何在 Java 中比较字符串?

java - 骨骼动画工具编程

c++ - 使用 RegExp 检测像 "#smth"这样的文本(还有一些术语)

r - R 中的反向引用

regex - Perl模式匹配变量问题

java - Tapestry 在 <a> 上生成形状属性

java - 当场运行多个线程并等待全部完成,方便且安全的hashMap

r - 用正斜杠或空分割字符串

java - Java 正则表达式中数字后面不跟变量(字母)

regex - 如何使用共享反向引用进行多次替换?