正则表达式匹配行,末尾有单个 "
Regex matching line with single " at the end
我有一个 csv,其中所有字段都用“”括起来。偶尔会有格式错误的行
Field1,Field2,Field3,Field4"
具有可变数量的字段。我需要删除这些特定的行,避免使用
形式的所有行
"Field1","Field2","Field3","Field4"
找到答案。
使用扩展正则表达式:
'/^[^"]+"$/'
您只需查找以下正则表达式即可匹配您的行
^[^"]*"$
这将查找并匹配所有字符并匹配行尾的 "
。
如果第一个"
不在行尾,则不会匹配该行。
如果字段内容不包含转义引号,可以测试
报价均匀度线。
如果匹配,则删除行:
^(?![^"]*(?:"[^"]*"[^"]*)*$).+$
这也可以适应转义引号。
需要更复杂的正则表达式。
这可能对你有用 (GNU sed):
sed '/^\([^"]*\("[^"]*"\)*\)*$/!d' file
删除该行,除非它包含零对或多对双引号。
我有一个 csv,其中所有字段都用“”括起来。偶尔会有格式错误的行
Field1,Field2,Field3,Field4"
具有可变数量的字段。我需要删除这些特定的行,避免使用
形式的所有行"Field1","Field2","Field3","Field4"
找到答案。
使用扩展正则表达式:
'/^[^"]+"$/'
您只需查找以下正则表达式即可匹配您的行
^[^"]*"$
这将查找并匹配所有字符并匹配行尾的 "
。
如果第一个"
不在行尾,则不会匹配该行。
如果字段内容不包含转义引号,可以测试
报价均匀度线。
如果匹配,则删除行:
^(?![^"]*(?:"[^"]*"[^"]*)*$).+$
这也可以适应转义引号。
需要更复杂的正则表达式。
这可能对你有用 (GNU sed):
sed '/^\([^"]*\("[^"]*"\)*\)*$/!d' file
删除该行,除非它包含零对或多对双引号。