正则表达式匹配CSV文件

时间:2010-11-25 14:24:37

标签: c# java .net regex

我正在尝试创建一个正则表达式,以匹配以下形式的记录的CSV文件:

optional value, , ,, again some value; this is already, next record;

现在有一个逗号(10)的上限,用于分隔每条记录的属性和分隔每条记录的无限数量的;。值可能存在也可能不存在。我对正则表达式没有经验,到目前为止,我的努力是徒劳的。请帮忙。如有必要,我会提供更多详情。

修改

我想验证该文件是否为所需格式并获取其中的记录数。

3 个答案:

答案 0 :(得分:1)

你真的需要使用正则表达式吗?可能有点矫枉过正。我只是执行一个String.Split()来获取记录,然后在每个记录上执行另一个String.Split()来获取值。也很容易得到元素的数量等。

如果你真的想使用Regexps,我会再次使用两个步骤: /(.*?);/获取数据集; /(.*?)[,;]/获取值。

可能也可以使用一个正则表达式,但我认为这有点过分(因为你必须找到子匹配等,以确定他们的父记录等)。

转义字符是另一回事,但与do相似:例如: /(.*?[^\\]);/

答案 1 :(得分:1)

试试这个

bool isvalid = csv.Split(';')
                    .Select(c => c.Split(',')
                        .Count())
                    .Distinct()
                    .Count() == 1;

答案 2 :(得分:0)

让我想起了着名的文章形式Coding Horror:Regular Expressions: Now You Have Two Problems

在处理CSV或其他文字格式时,

FileHelpers节省了我的一天。