繁体   English   中英

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

[英]Escape 'escape character' in between double quotes in a string

我有字符串格式的python代码

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

我想转义任何只出现在双引号或单引号之间的字符。

最后的字符串应该是这样的

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

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

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

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

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

"[^"]*"

||   ||
||   |and terminated with a "
||   MANY repeatations of that (written as *)
|characters that are NOT " (written as [^"])
Start with "

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

在这一点上,标准正则表达式无法为您完成这项工作:您可以使用"([^"])[^"]*"获得此类发现的第一个字符,但是您的下一个问题是如何获得第二个,第三等发现。 您可能会考虑在匹配之前和之后添加可变长度标识符.. 但即使使用像"[^"]*([^"])[^"]*"这样的正则表达式,您总是只会得到一个匹配结果在两个 "" 之间。正则表达式不支持遍历结果的概念;通配符总是被评估为最大匹配。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM