Regex 用于检查字段正确数量的正则表达式

Regex 用于检查字段正确数量的正则表达式,regex,csv,Regex,Csv,我有一个文件,其中字段用逗号分隔 bla,20171206123901,bla, 我想检查在最后一个逗号是可选的正则表达式行中是否有正确数量的字段。在这个例子中,它应该正好是3。 正确的正则表达式是什么 我原以为这个可能行得通,但它行不通 (.*,){3}(,)[0,1] 因为这一行也匹配字段太多的行 任何帮助都将不胜感激 谢谢以下是您可以尝试应用于每一行的模式: ^[^,]*,[^,]*,[^,]*,?$ 这假设如果可选的第三个逗号出现,则它是行中的最后一个逗号。此外,该模式还允许空列。

我有一个文件,其中字段用逗号分隔

bla,20171206123901,bla,
我想检查在最后一个逗号是可选的正则表达式行中是否有正确数量的字段。在这个例子中,它应该正好是3。 正确的正则表达式是什么

我原以为这个可能行得通,但它行不通

(.*,){3}(,)[0,1]
因为这一行也匹配字段太多的行

任何帮助都将不胜感激


谢谢

以下是您可以尝试应用于每一行的模式:

^[^,]*,[^,]*,[^,]*,?$
这假设如果可选的第三个逗号出现,则它是行中的最后一个逗号。此外,该模式还允许空列。如果不是这样,则将模式中的所有位置替换为
[^,]*

编写上述内容的另一种方法是利用重复列:

^(?:[^,]*,){2}[^,]*,?$
在这里,您可以将
2
替换为所需列数减去1。因此,对于
3
列,您可以在模式中使用
{2}

这个应该可以:

^(?:[^,]+,[^,]*){2},?$
如果需要添加更多列,可以更改数量(列数减1)


文件中正确的字段数是多少?最后一个逗号是否可选(即是否可以使用最后一个逗号)?您好,Tim,正确的数字是3(应该正好是3),最后一个逗号可以接受。非常感谢,但是可以动态设置正确的数字吗?在这个解决方案中,正好是三个。但是假设有一个变量i。我怎样才能动态地做呢?很好,非常感谢。我为这个问题挣扎了3个小时,你只需要5分钟:D