Skip to main content
 首页 » 编程设计

c#之.NET 正则表达式删除引号内的换行符

2024年02月01日29jpfss

我正在尝试清理文本文件以便将其导入 Excel,但该文本文件在几个双引号字段中包含换行符。该文件以制表符分隔。

例子是:

"12313"\t"1234"\t"123 
 
5679" 
"test"\t"test"\t"test" 
"test"\t"test"\t"test" 
"12313"\t"1234"\t"123 
 
5679" 

我需要删除换行符,以便最终显示如下:

"12313"\t"1234"\t"1235679" 
"test"\t"test"\t"test" 
"test"\t"test"\t"test" 
"12313"\t"1234"\t"1235679" 

“\t”是制表符分隔符。

我看过其他几个关于 SO 的解决方案,但它们似乎不处理多行。我们已经尝试使用多种 CSV 解析器解决方案,但似乎无法让它们适用于这种情况。目标是将整个字符串传递到一个 REGEX 表达式中,并让它返回并移除引号之间的所有换行符,同时保留引号外的换行符。

请您参考如下方法:

你可以使用这个正则表达式:

(?!(([^"]*"){2})*[^"]*$)\n+ 

Working Demo

这个匹配一个或多个换行符后没有偶数个引号(它假定数据中没有转义异常)。