【发布时间】:2020-01-07 09:25:44
【问题描述】:
我有一个包含此错误的 .csv 文件,我想用正则表达式更正,某些字段包含换行符,例如:
"abc
de
f 123",123,456
应该在一行,我只想删除换行符但保留文本
"abcdef 123",123,456
我尝试在双引号内进行隔离,但这仅删除了第一个换行符:
^(?:"[0-9a-zA-Z])\r?\n(?=",)
(文本可以包含数字和其他字符,所以我尝试包含它们,我只想删除换行符并保留所有其他字符,希望清楚)
【问题讨论】:
-
听起来您缺少多行标志,因为您使用的是
^锚 -
如果你不能为开/关引号定义左右手上下文,你不能用一个正则表达式来实现它(因为左右手分隔符是相同的)。最好的方法是使用一些 CSV 解析器和您认为合适的格式来读取文件。
-
有什么例子吗?尝试
^(?:"[0-9a-zA-Z])?m\r?\n(?=",)没有结果... -
你能假设第一行总是以双引号开头吗?如果是这样,您可以尝试
\r?\n(?!")并将其替换为空:删除所有换行符,除非下一行的开头有双引号 -
@WiktorStribiżew 我用
"定义左边,用",定义右边