正则表达式匹配数字和逗号

时间:2009-06-18 17:21:54

标签: regex perl

我有一个.csv文件,我只对逗号分隔整数的行感兴趣:

23,2,4,56,78,9,4,6

一行中逗号分隔值的数量应大于5(或其他)。

我在perl中这样做。

5 个答案:

答案 0 :(得分:11)

/^(\d+,){4,}\d+$/

匹配一组数字,后跟逗号。数字逗号对被视为一个组,其本身必须至少重复四次。然后匹配序列中不需要后跟逗号的最后一个数字。

如果您不需要捕获数字,请使用非捕获组(将略微加快速度):

/^(?:\d+,){4,}\d+$/

答案 1 :(得分:1)

/\d{1,3}(,\d{3}){0,4}/

这只会匹配格式正确的逗号分隔数字(例如100,000,000)。在逗号分隔文件中使用逗号分隔数字仍然是一个可怕的想法,但我离题了。正则表达式在上下文中最不可能出现问题。

答案 2 :(得分:0)

无论如何:

/^([0-9]\+,?)\+$/

已修改以更正评论中指出的错误。

答案 3 :(得分:0)

/\d+(?:,\d+)*/

或包含负数

/-?\d+(?:,-?\d+)*/

答案 4 :(得分:0)

您可能需要考虑使用[0-9]而不是\ d,因为\ d可以匹配Unicode认为数字但不是标准阿拉伯数字的内容。