我有String格式的python代码
"input = \"1\n2\t3\n4\"\nprint(input)"
我想转义仅在双引号或单引号之间出现的所有字符。
最终的字符串应如下所示
"input = \"1\\n2\\t3\n4\"\nprint(input)"
我尝试这样做,但是不起作用。
code.replaceAll("(\")[\n\t\b]*(\")", "\"\\n\"")
答案 0 :(得分:0)
您要查找引号(“)之后所有非引号,直到下一个引号的字符。
正则表达式以查找两个引号之间的所有文本:
"([^"])[^"]*"
但是现在您不希望在“和”之间找到这样的字符串-您希望每个字符都是唯一的发现。
目前,标准正则表达式无法为您完成此工作:
您可以使用"[^"]*([^"])[^"]*"
来获得此类发现的第一个字符,但是接下来的问题是如何获得第二,第三等发现。您可能会考虑在匹配之前和之后添加可变长度的标识符。.即使使用{{1}}这样的正则表达式,对于两个“”之间的内容,您始终只会得到一个匹配项。正则表达式不支持循环查找结果的概念;通配符始终被评估为最大匹配。
因此您将需要一些其他的东西。 我建议您在字符串中搜索“”的第一个位置,例如使用String.indexOf(...),然后遍历字符串,直到找到下一个(终止)引号。 对于介于两者之间的所有字符,可以替换它。 因此,您将使用单独的数据输出变量。