在groovy中使用正则表达式替换String中的所有匹配项

时间:2013-12-05 10:14:49

标签: regex groovy multiple-matches

当我的代码只有一次出现时:

def result = "Text 1,1"
def matches = (result =~ /^.+\s([0-9],[0-9])$/ ).with { m -> m.matches() ? result.replace(/${m[ 0 ][ 1 ]}/, 'X'+m[ 0 ][ 1 ]+'X') : result }
assert "Text X,X" == matches

如果我的String包含多次出现,该怎么办?

def result = "aaaa Text 1,1 Text 2,2 ssss"

由于

1 个答案:

答案 0 :(得分:14)

您可以将以上内容替换为:

def matches = result.replaceAll( /[0-9],[0-9]/, 'X,X' )

或者,你可以这样做:

def result = "aaaa Text 1,1 Text 2,2 ssss"

result = result.replaceAll( /[0-9],[0-9]/ ) { m -> "X${m}X" }

assert result == 'aaaa Text X1,1X Text X2,2X ssss'