用于处理逗号分隔列表的正则表达式,带有不规则引号

时间:2015-07-14 18:16:39

标签: regex string parsing regex-lookarounds

我从一个来源收到一些非常难看的数据,需要用正则表达式来解决这个问题。要求提供程序清理数据源是不可能的。我的数据如下:

string 1,string 2 ,," string,4",string 5

正如我所看到的,这里有两个复杂因素。我需要匹配第3个字段中的空字符串,我需要捕获"字符串,4"作为第四场。最困难的部分一直在试图弄清楚如何处理引号中的逗号。我一直在玩前瞻/后视断言,但没有多少运气。此外,虽然我不是肯定的,但我需要假设任何字段都可以随时引用并期望下面的一行,而不是期望它是一致的:

string 1," string,2" ,, string 4,string 5

有人有建议吗?

3 个答案:

答案 0 :(得分:1)

这对我来说效果很好。如果需要改进,请告诉我

((?:".*?")|[^,"]*)

答案 1 :(得分:1)

我不确定我是否理解正确,但可能会使用The Regex Trick的变体

"[^"]*"|\w[^",]*

See test at regex101;使用PCRE如果要捕获引号内的内容,请使用branch reset

(?|"([^"]*)"|(\w[^",]*))

Test at regex101

答案 2 :(得分:1)

for key, val in mydict.items():

   val1, val2, val3 = val

   if val2 == 'awesome match':

       new_var = val1

这完全符合您的要求 你可以在https://regex101.com/r/bZ8xM8/1

查看