我希望将字符串中所有出现的转义引号 (\"( 替换为 (\\\"(,然后将所有剩余的未转义引号 ("( 替换为转义引号 (\"(。 这是我到目前为止尝试的:
row = row.replaceAll("\\(?>")", "\\"");
row = row.replaceAll("((?<!\\)")", """);
示例输入:"This is a test with " and "'s where " is replaced with triple 's before "
示例输出:"This is a test with \" and "'s where \" is replaced with triple 's before "
\(?>")"
在替换中处理 https://www.freeformatter.com/java-regex-tester.html#ad-output,找不到转义的引号。
对此的任何帮助不胜感激。
看起来你需要有四个 \ 才能找到一个 . 我用回头和向前看来找到\"。 感谢java,正则表达式,需要在正则表达式中转义反斜杠。
"\\(?>")"
会找到\"。
"(?<!\\)""
会发现 "'s 前面没有 \。
所以我发现同时做这两件事的解决方案是:
Pattern escapePattern = Pattern.compile("\\(?>")");
Pattern quotePattern = Pattern.compile("(?<!\\)"");
for(String row : rows.split("n")) {
Matcher escapeMatcher = escapePattern.matcher(row.trim());
String escapedString = escapeMatcher.replaceAll("\\\\\\"");
Matcher quoteMatcher = quotePattern.matcher(escapedString);
queryRows.add(quoteMatcher.replaceAll("\\""));
}
只需将单个反斜杠替换为三个反斜杠,然后将引号替换为反斜杠引号:
row = row.replaceAll("\\(?!')", "\\\\\\").replace(""", "\"");
首先将单个 ( \ ( 替换为 ( \\ (,然后将 ( " ( 替换为 ( \" ( (
row = row.replace("\", "\\").replace(""", "\"");