Замените все вхождения в строке, используя регулярное выражение в groovy
Когда есть только одно вхождение, мой код работает:
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
Как я могу сделать, если моя строка содержит несколько вхождений?
def result = "aaaa Text 1,1 Text 2,2 ssss"
Спасибо
1 ответ
Решение
Вы можете заменить вышеуказанное на:
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'