问题:
我对正则表达式不熟悉,我有一个字符串:
"this @ is @@ sample @@@ string @@@@"
还有一个目标字符串:
"xxx"
所以处理的过程是:
- 将
'@'
替换为目标字符串"xxx"
- 将
'@@'
替换为'@'
输出结果如下:
this xxx is @ sample @xxx string @@
*
我的尝试(scala),
"this @ is @@ sample @@@ string @@@@".replaceAll("@@", "\u0000").replaceAll("@", "xxx").replaceAll("\u0000", "@")
但问题是,如果源字符串包含 \u0000
,它也会被替换为 @
所以,关于正则表达式,有可能选择不相邻两次的 @
,因此在 "this @ is @@ sample @@@ string @@@@"
的情况下,我们将仅替换目标字符串中不相邻两次的字符,例如
"this @
is @@ sample @@@
string @@@@"(匹配两个结果将用目标字符串xxx
替换)
然后简单地使用 .replaceAll("@@", "@")
即可