正则表达式替换一个字符或重复只替换一个字符

时间:2018-04-03 22:41:57

标签: java regex escaping jsonb

我试图编写将删除Backslash()字符的正则表达式 替换" \"用"" ,但使用替换它将替换所有反斜杠

但是我不想替换所有的反斜杠()

例如,

\" TO"

\\\"到\"

\\ n TO \ n

此处的示例数据

{\"数据\":\"文本\\\" textInsideQuote \\\" \"}

我的期望

{"数据":"文本\" textInsideQuote \" \"}

没有任何重复的那个应该首先被替换,然后重复的那个应该减少到一个。

关于我应该如何实现这一点的任何想法?

由于

2 个答案:

答案 0 :(得分:2)

  

没有任何重复的那个应该首先被替换,然后重复的那个应该减少到一个。

我没必要使用两次传球。它可以使用单个正则表达式完成:

input.replaceAll("(\\\\)*\\\\", "$1")
  • 任何单独的反斜杠都会被空字符串
  • 替换
  • 重复反斜杠的组将减少为一个反斜杠

我希望我正确地解释你的话。

答案 1 :(得分:0)

实际上问题在于我的代码,我双重转义json数据。 对于那些对类似问题感兴趣的人,Patrick Parker的答案应该有效。

由于