正则表达式匹配线与单“”在最后

时间:2018-05-23 17:43:54

标签: regex csv sed regex-negation

我有一个csv,其中所有字段都用“”括起来。

表格中偶尔会出现格式错误的行
  

字段1,字段2,字段3,字段4"

具有可变数量的字段。我需要删除这些特定的行,避免使用表单的所有行

  

“字段1”, “字段2”, “字段3”, “字段4”

4 个答案:

答案 0 :(得分:2)

您可以查找以下正则表达式以匹配您的行

^[^"]*"$

<强> Demo

这将查找并匹配所有字符,并匹配行尾的"

如果第一个"不在该行的末尾,则该行不会匹配。

答案 1 :(得分:1)

如果字段内容不包含转义引号,则可以测试
引用均匀线。

如果匹配,则删除以下行:

^(?![^"]*(?:"[^"]*"[^"]*)*$).+$

这也可以用来解释逃脱的报价 需要更复杂的正则表达式。

答案 2 :(得分:1)

这可能适合你(GNU sed):

 sed '/^\([^"]*\("[^"]*"\)*\)*$/!d' file

删除该行,除非它包含零个或多个双引号对。

答案 3 :(得分:0)

找到答案。

使用扩展正则表达式:

'/^[^"]+"$/'