我需要解析TSV格式的文件(制表符分隔值).我使用正则表达式将文件分解为每一行,但我找不到令人满意的解析每一行.现在我来了:
(?<g>("[^"]+")+|[^\t]+)
Run Code Online (Sandbox Code Playgroud)
但如果该行中的项目具有超过2个连续的双引号,则它不起作用.
以下是文件的格式:每个元素由制表分隔.如果某个项目包含一个标签,则它会被双引号括起来.如果项目包含双引号,则会加倍.但有时一个元素包含4个连续双引号,上面的正则表达式将元素分成2个不同的元素.
例子:
item1ok"item""2""oK"
正确解析为2个元素:item1ok和项目"2"ok(修剪不必要的引号后),但是:
item1oK"item""""2oK"
被解析为3个元素:item1ok,item和"2ok(再次修剪后)".
有谁知道如何让正则表达式适合这种情况?或者是否有另一种解决TSV的解决方案?(我在C#中这样做).
您可以使用TextFieldParser.这在技术上是一个VB程序集,但您可以通过引用Microsoft.VisualBasic.FileIO程序集在C#中使用它.
上面链接中的示例甚至显示在制表符分隔文件上使用它.
我建议您查看" Fast CSV Reader "或" FileHelpers library ",而不是尝试构建自己的CSV/TSV文件解析器(或使用String.Split).
我正在使用第一个,并且非常满意它(它支持任何分隔符,例如逗号,分号,制表符).