java - 正则表达式 : mark every match in the string and return the string edited with marks, Java

标签 java regex

目标是用括号标记字符串中的每个匹配项,并为每个匹配项标记返回相同的字符串

即:

Pattern = "\\d+"
Text = "e3e3e"
wanted result = "e(3)e(3)e"

我尝试过:

while (matcher.find())
text = text.replace(match.group(), "(" + match.group() + ")");

但每次找到匹配项时它都会一遍又一遍地替换所有匹配项

e3e3e => e((3))e((3))e instead of e(3)e(3)e
h4h444h = > h(4)h(4)(4)(4)h  instead of h(4)h(444)h

最佳答案

您可以将匹配项替换为 ($0),其中 $0 代表整个匹配项:

String Pattern = "\\d+";
String Text = "e3e3e";
System.out.println(Text.replaceAll(Pattern, "($0)"));

请参阅Java demoregex demo .

Java Pattern docs这么说

Group zero always stands for the entire expression.

关于java - 正则表达式 : mark every match in the string and return the string edited with marks, Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47840310/

相关文章:

java - 尝试在 Java App-V 的新进程中启动 Microsoft Edge Chromium

java - 使用基于光标位置的函数调用 - Android

regex - 将整数数值区间转换为正则表达式

javascript - 需要你帮助一个简单的 javascript 正则表达式

java - 接口(interface)和实例化

java - spring-data-elasticsearch 基于注释的审计?

java - 如何制作无法编辑的EditText?

python - 每日时间(带区域)或时间间隔的正则表达式

javascript - 替换元素中的文本

python - 如何使用 Python Regex 查找首字母大写的所有单词