字符串中双引号之间的转义符

时间:2019-03-05 22:35:04

标签: java regex string

我有String格式的python代码

"input = \"1\n2\t3\n4\"\nprint(input)"

我想转义仅在双引号或单引号之间出现的所有字符。

最终的字符串应如下所示

"input = \"1\\n2\\t3\n4\"\nprint(input)"

我尝试这样做,但是不起作用。

code.replaceAll("(\")[\n\t\b]*(\")", "\"\\n\"")

1 个答案:

答案 0 :(得分:0)

您要查找引号(“)之后所有非引号,直到下一个引号的字符。

正则表达式以查找两个引号之间的所有文本:

"([^"])[^"]*"

但是现在您不希望在“和”之间找到这样的字符串-您希望每个字符都是唯一的发现。

目前,标准正则表达式无法为您完成此工作: 您可以使用"[^"]*([^"])[^"]*"来获得此类发现的第一个字符,但是接下来的问题是如何获得第二,第三等发现。您可能会考虑在匹配之前和之后添加可变长度的标识符。.即使使用{{1}}这样的正则表达式,对于两个“”之间的内容,您始终只会得到一个匹配项。正则表达式不支持循环查找结果的概念;通配符始终被评估为最大匹配。

因此您将需要一些其他的东西。 我建议您在字符串中搜索“”的第一个位置,例如使用String.indexOf(...),然后遍历字符串,直到找到下一个(终止)引号。 对于介于两者之间的所有字符,可以替换它。 因此,您将使用单独的数据输出变量。