如何使用正则表达式转义无效字符串?

时间:2015-04-14 18:05:13

标签: java regex

我有以下字符串,它被错误地转义。

 "\"name\":\"\"/test/name=testame\" 001\""

我想使用正则表达式来查找包含上述模式的字符串,并将其替换为正确的转义模式。目前,我正在使用硬编码来查找和替换字符串,这不是我想要的。

PS:我无法控制上面的字符串模式。我将不得不处理我的申请中的错误。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

这会有所帮助:

  • \\找到\
  • \"找到“
  • [a-zA-Z_-]+可能足以匹配您的标签和名称
  • [0-9]+可能会匹配该号码而不会搞砸或发现太多
  • :=是文字,不需要转义
把它们放在一起,你就得到了一个正常的夜晚表达。

我在这个问题中没有看到任何禁止你使用括号进行替换的内容,但你没有说明你用什么工具来替换,所以我不能给你很多提示。通常你会把

(PART 1 OF REGEXP)SOME LITERAL YOU HATE(PART 2 OF REGEXP) 

作为你的匹配器和

\1SOME LITERAL YOU LIKE\2

作为替换字符串。如果您打算使用perl,那么你可以使用

s\MATCHER\SUBSTITUTER\g.

你可以使用perl one-liner做到这一点,但你必须在重新转发引号时要小心。