我有一个外部双引号""
的字符串。我需要删除内部双引号。什么是正则表达式?
例如:
输入:"你好,#34;我到达"今晚" --->输出:"你好,我 今晚到了#34;
输入:"你好,#34;我今晚到了#34;" --->输出: "你好,我今晚到了#34;
输入:""你好"我今晚到了#34; --->输出:"你好,我今晚到了#34;
我尝试了以下代码,但它不适用于我的示例2和3.它适用于示例1.
data.replaceAll("\"(\\b[^\"]+)?\"\\b([^\"]+)\\b\"([^\"]+\\b)?\"","\"$1$2$3\"");
背景:我有一个CSV文件,我需要解析它。数据在外部引号内带有内部引号。例如:
"aa","bb","cc","dd "REMOVE QUOTES" "
"aaa","bbb","ccc",""REMOVE QUOTES" ddd "
我希望Regexp只删除内部引号并保留外部引号。输出:
"aa","bb","cc","dd REMOVE QUOTES "
"aaa","bbb","ccc","REMOVE QUOTES ddd "
答案 0 :(得分:2)
您可以使用负面后视和前瞻的组合:
data = data.replaceAll("(?<!^)\"(?!$)", "")
(?<!^)
行开头的负面观察(?!$)
EOL
答案 1 :(得分:1)
给它一个机会。我得到内部字符串(忽略外引号)然后删除所有引号并添加外部引号。
String input1 = "\"Hello there \"I arrive\" tonight\"";
String output1 = "\"" + input1.substring(1, input1.length() - 1).replaceAll("\"", "") + "\"";
System.out.println(output1);
输出继电器
“你好,我今晚到了”
答案 2 :(得分:0)
如果我认为你的字符串以第一个“并以最后一个结尾”开头,你可以使用它作为正则表达方式:
data.replaceAll("(?<!^)\"(?!$)", "");