Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 逃逸';转义字符';在字符串中的双引号之间_Java_Regex_String - Fatal编程技术网

Java 逃逸';转义字符';在字符串中的双引号之间

Java 逃逸';转义字符';在字符串中的双引号之间,java,regex,string,Java,Regex,String,我有字符串格式的python代码 "input = \"1\n2\t3\n4\"\nprint(input)" 我想转义任何只出现在双引号或单引号之间的字符 最后一个字符串应该如下所示 "input = \"1\\n2\\t3\n4\"\nprint(input)" 我试过这么做,但没用 code.replaceAll("(\")[\n\t\b]*(\")", "\"\\n\"") 您希望查找引号(“)后面的所有非引号字符,直到下一个引号 正则表达式查找两个引号之间的所有文本: "[^"]

我有字符串格式的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 "
但是现在,对于介于“和”之间的字符串,您不希望有一个查找—您希望每个字符都是唯一的查找

此时,标准正则表达式无法为您完成以下任务: 使用
“([^”])[^”]*”
可以只获得此类查找的第一个字符,但接下来的问题是如何获得第二个、第三个etc查找。您可能会考虑在匹配之前和之后添加可变长度标识符。但即使使用类似于
“[^”]*([^”])[^”]*”的正则表达式
对于两个“”之间的查找,始终只会得到一个匹配项。正则表达式不支持通过结果循环的概念;通配符的计算结果始终为最大匹配

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

“\n”
不是两个字符的字符串,而是单个LF换行字符。由于没有反斜杠,因此无法在此处转义反斜杠。