仅限制一行的正则表达式

restricting the regular expression only for a line

我有一个来自其中一个系统的 CSV 文件。

""demo"",""kkkk""
""demo " ","fg"
"     " demo"  "
"demo"
"value1","" frg"   ","vaue5"
"val3",""tttyy "      ",""hjhj","ghuy"

Objective 删除所有 2 对双引号,只允许一组双引号,如下所示。双引号组之间的空格不是固定值。这必须在使用 replaceAll

的 Java 程序中处理

Java

中的函数
"demo","kkkk"
"demo","fg"
"demo"
"demo"
"value1","frg","vaue5"
"val3","tttyy","hjhj","ghuy"

我用 "[ ]*" 在 regex101 上厌倦了它,它适用于 PHP>=7.3 版本,但不适用于 Java。 还尝试了 [\"][\"]|[^\"]\s+[\"] 但仍未获得所需的输出。对于可用于 Java 程序的正则表达式有什么建议吗?

根据显示的示例数据,您可以使用:

String repl = str.replaceAll("(?:\h*\"){2}\h*", "\"");

RegEx Demo

正则表达式详细信息:

  • (?:\h*\"){2}:匹配一对双引号之间有0个或多个空格
  • \h*:匹配0个或多个空格
  • 替换只是一个"