Заменив часть сопоставленного рисунка звездочками той же длины, что и часть рисунка, вы можете использовать решение типа
val s = "Text here, \"raw\": \"Remove\" and here"
val rx = "(\"raw\":\\s*\")([^\"]+)(\")".r
val res = rx.replaceAllIn(s, m => m.group(1) + ("*" * m.group(2).length) + m.group(3))
println( res ) // => Text here, "raw": "******" and here
Регулярное выражение
(\"raw\":\\s*\")([^\"]+)(\")
|___ Group1 ___||_ G2 _||G3|
Соответствует и захватывает в Группу 1 (благодаря вводимым скобкам) "raw":
и затем 0+ пробелов (с \s*
), затем захватывает в Группу 2 любой один или несколько символов, отличных от "
, изатем вводит в группу 3 двойные кавычки.
С помощью ReplaceAllIn
вы можете передать данные совпадения в лямбда-выражение, где вы можете манипулировать совпадением до того, как произойдет замена.Так, m
- это объект соответствия, m.group(1)
- это значение группы 1, m.group(2).length
- длина значения группы 2, а m.group(3)
здесь содержит "
char, значение группы 3.