.NET Regex删除行情中的换行符

Cha*_*hur 1 c# regex

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

示例是:

"12313"\t"1234"\t"123

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

5679"
Run Code Online (Sandbox Code Playgroud)

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

"12313"\t"1234"\t"1235679"
"test"\t"test"\t"test"
"test"\t"test"\t"test"
"12313"\t"1234"\t"1235679"
Run Code Online (Sandbox Code Playgroud)

"\ t"是制表符分隔符.

我在SO上看了几个其他的解决方案,但它们似乎没有处理多行.我们尝试过使用多种CSV解析器解决方案,但似乎无法让它们适用于这种情况.目标是将整个字符串传递给REGEX表达式并使其返回,并且在引号之外的换行符保留时删除引号之间的所有换行符.

anu*_*ava 6

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

(?!(([^"]*"){2})*[^"]*$)\n+
Run Code Online (Sandbox Code Playgroud)

工作演示

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