首页 > 解决方案 > 正则表达式计算 CSV 中的逗号,但忽略引号内的逗号

问题描述

我目前使用这个正则表达式来计算一行文本中的逗号数:

^([^,]*,){9}[^,]*$

这是来自我们测试服务器的示例消息:

2018-06-25T19:44:31.187Z,MAIL\Outbound Proxy Frontend MAIL,08D5D14527D3D0F3,1,192.168.20.1:717,192.168.20.23:28050,>,"220 MAIL.potato.ca Microsoft ESMTP MAIL Service ready at Mon, 25 Jun 2018 15:44:30 -0400",

现在这有效,但它也计算引号内的逗号(接近结尾)。我需要它来检测 8 个逗号,从而忽略任何内部引用的 "" 文本。无法理解它,所以有什么想法可以做到这一点吗?

为了提供上下文,这是为了正确解析来自邮件服务器的日志,并且使用我当前的设置,如果电子邮件的主题中有一个或多个逗号,它会破坏我的正则表达式检测......

注意。这不是一种语言,但背后的正则表达式引擎是基于 java 的。

不知道为什么标记为重复。链接的问题是基于代码的提取而不是计数。

标签: javaregex

解决方案


推荐阅读