regex 用Groovy中的条件替换特定字符串

46qrfjad  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(126)

我们有这个字符串。我们需要替换\的出现(反斜杠)和\"(反斜杠后跟双引号),并带有点(.),但如果\"(反斜杠后跟双引号)后跟逗号(,),如Id值末尾的情况。我们尝试使用replaceAll,因为整个有效负载相当大。
输入示例:

{
"Name":"138.5\" Ultra\violet"
"Id":"\\z\\\\\\\\",
}

输出应为:

{
"Name":"138.5. Ultra.violet"
"Id":"..z......",
}

通过使用这段代码,它负责替换\"\,但它也替换了\",即使它后面跟着逗号(,)。我假设它可以用正则表达式完成,但我不擅长正则表达式,所以感谢任何帮助。

newcontent=newcontent.toString().replaceAll(/\\"/, '.')
    newcontent=newcontent.toString().replaceAll("\\\\", ".")
vjhs03f7

vjhs03f71#

我会将\",替换为special,然后将所有\(")替换为点,再将specials替换为\",

String input = /{ "Name":"138.5\" Ultra\violet" "Id":"\\z\\\\\\\\", }/

String output = input.replaceAll( '\\\\",', '@@@' )
                     .replaceAll( '\\\\"?', '.' )
                     .replaceAll( '@@@', '\\",' )

assert output == '{ "Name":"138.5. Ultra.violet" "Id":"..z.......", }'

相关问题