我正在尝试创建一个正则表达式,以匹配以下形式的记录的CSV文件:
optional value, , ,, again some value; this is already, next record;
现在有一个逗号(10)的上限,用于分隔每条记录的属性和分隔每条记录的无限数量的;
。值可能存在也可能不存在。我对正则表达式没有经验,到目前为止,我的努力是徒劳的。请帮忙。如有必要,我会提供更多详情。
修改
我想验证该文件是否为所需格式并获取其中的记录数。
答案 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节省了我的一天。