从CSV获取列作为正则表达式组

时间:2018-05-19 12:06:05

标签: regex

不习惯用正则表达式玩很多东西,但现在它确实让我很头疼。

我有一个多行CSV文件,我需要在第一个字段中找到以特定值开头的行,然后为该行的所有剩余字段设置组,即使某些字段为空。 CSV的长度可以变化

例如:

monday,1,8,nice,,sunny,cold,
tuesday,3,2,hello,bye,,sad,tomorrow,
wednesday,8,ok,4,xxx,,999,welcome,

我希望匹配以“tuesday”开头的CSV行,并将所有字段排除在第一个匹配组之外:

Group1 = 3
Group2 = 2
Group3 = hello
Group4 = bye
Group5 = 
Group6 = sad
Group7 = tomorrow

不幸的是我坚持使用正则表达式,因为该工具只处理正则表达式。在Go中用几行代码解析它会容易得多,但在这种情况下根本不可能。

在IRC群组上找到了一些帮助,但它只能使用固定长度的CSV字符串:

^tuesday,([^,]+),([^,]+),([^,]+),([^,]+),([^,]*),([^,]+),([^,]+),$

是否可以使用可变长度来完成?

由于

1 个答案:

答案 0 :(得分:0)

如果列数已修复,则可以使用:

^tuesday,([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)

它找到以星期二开头的行,并创建7个组,捕获不是,的所有内容。

您可以在此处查看:https://regexr.com/3pn81