regex - 从 CSV 获取列作为正则表达式组
问题描述
以前不怎么玩正则表达式,但现在它真的让我头疼。
我有一个多行 CSV 文件,我需要在第一个字段中找到以特定值开头的行,然后为该行的所有剩余字段设置组,即使某些字段为空。CSV 的长度可能会有所不同
例如:
monday,1,8,nice,,sunny,cold,
tuesday,3,2,hello,bye,,sad,tomorrow,
wednesday,8,ok,4,xxx,,999,welcome,
我想匹配以“星期二”开头的 CSV 行,并让所有字段不包括第一个匹配组,因此:
Group1 = 3
Group2 = 2
Group3 = hello
Group4 = bye
Group5 =
Group6 = sad
Group7 = tomorrow
不幸的是,我坚持使用正则表达式,因为该工具只处理正则表达式。在 Go 中用几行代码解析它会容易得多,但在这种情况下根本不可能。
在 IRC 组上找到了一些帮助,它可以工作,但只能使用固定长度的 CSV 字符串:
^tuesday,([^,]+),([^,]+),([^,]+),([^,]+),([^,]*),([^,]+),([^,]+),$
也可以用可变长度来完成吗?
谢谢
解决方案
如果列数是固定的,那么这将起作用:
^tuesday,([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)
它找到以tuesday开头的行并创建 7 个组来捕获所有非,
.
您可以在这里查看:https ://regexr.com/3pn81 。