限制正则表达式只能用于一行



我有一个CSV文件从下面的一个系统。

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

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

来处理。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演示

RegEx细节:

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

最新更新