正则表达式:标记字符串中的每个匹配项并返回使用标记Java编辑的字符串

时间:2017-12-15 21:49:22

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

1 个答案:

答案 0 :(得分:1)

您可以将($0)替换为$0,其中String Pattern = "\\d+"; String Text = "e3e3e"; System.out.println(Text.replaceAll(Pattern, "($0)")); 代表整场比赛:

Id   Timestamp            name_id     testobject_id 
----------------------------------------------------
2  | 2017-12-15 18:36:46 | 1        |  1
3  | 2017-12-15 18:36:46 | 2        |  1
1  | 2016-01-01 00:00:00 | 1        |  1
4  | 2017-12-15 18:36:46 | 1        |  2
5  | 2017-12-15 18:36:46 | 2        |  2

请参阅Java demoregex demo

Java Pattern docs

  

组0始终代表整个表达式。