Pra*_*dha 5 regex string replace scala
问题:我是正则表达式的新手,我有字符串
"this @ is @@ sample @@@ string @@@@"
并且有目标字符串,"xxx"
所以过程是,
替换'@'为"xxx"(目标字符串)
替换'@@'为'@'
所以输出看起来像这样,
this xxx is @ sample @xxx string @@
*
我试过的(scala),
"this @ is @@ sample @@@ string @@@@".replaceAll("@@", "\u0000").replaceAll("@", "xxx").replaceAll("\u0000", "@")
Run Code Online (Sandbox Code Playgroud)
但问题是如果源字符串包含\u0000,它也会替换为@
所以,来到正则表达式是否有可能选择@两次不连续"this @ is @@ sample @@@ string @@@@"的字符串,所以如果我们将目标字符串替换为仅两次不连续的字符串,例如
“这@是@@样本@@@字符串@@@@”(匹配的两个结果将替换为目标字符串xxx)
而不是简单地.replaceAll("@@", "@")
您可以使用
val text = "this @ is @@ sample @@@ string @@@@"
val regex = "@@?".r
println(regex.replaceAllIn(text, m => if (m.group(0).length == 1) "xxx" else "@"))
Run Code Online (Sandbox Code Playgroud)
看一个Scala demo,输出:
this xxx is @ sample @xxx string @@
Run Code Online (Sandbox Code Playgroud)
该@@?模式匹配一个或两个@字符。如果匹配值的长度为 1,则替换为xxx,否则替换为@。
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |