csv 按逗号拆分,但保留双引号中的字符串原子

bkhjykvo  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(125)

我正在尝试找出一个正则表达式模式来拆分下面的字符串:
2022-09- 22 T03:55:59.433Z,,,,sm 100,”sm100.w.gm.net =25 2.7.2 mailto:012323@eu-w1.as.com [IId=200023,主机名= mky.wgm.net]排队信息”,,SMTP,HAREDIRECT
转换为以下值:

2022-09-22T03:55:59.433Z,
,
,
,
sm100,
"sm100.w.gm.net=25 2.7.2 <mailto:012323@eu-w1.as.com> \[IId=200023, Hostname=mky.wgm.net\] Queued info",
,
SMTP,
HAREDIRECT

不希望正则表达式用逗号分割第6行(最长的一行)中的值,因为即使IId=200023后面有逗号,整个字符串也应该被认为是原子的,因为它是用双引号括起来的。
我已经在regex101中尝试了很多模式,这个模式是我目前所得到的:

,(?![" ])

它似乎已经正确地识别了逗号,但是我找不到一种方法来改变我的正则表达式模式以找到这些组。

kt06eoxx

kt06eoxx1#

parse_csv()

print txt = '2022-09-22T03:55:59.433Z,,,,sm100,"sm100.w.gm.net=25 2.7.2 mailto:012323@eu-w1.as.com [IId=200023, Hostname=mky.wgm.net] Queued info",,SMTP,HAREDIRECT'
| project parse_csv(txt)

| 文本|
| - ------|
| [“2022-09- 22 T03:55:59.4330000Z”,",",",",“sm 100”,”sm100.w.gm.net =25 2.7.2 mailto:012323@eu-w1.as.com [IId=200023,主机名= mky.wgm.net]排队信息”,",“SMTP”,“HAREDIRECT”]|
Fiddle

相关问题