我想要一个CSV解析器。但是,我想要以下内容:正则表达式必须检查,CSV以逗号,
结尾(否则正则表达式不能将CSV视为有效)!如果CSV没问题,那么我将在,
。
示例:
hello,world,end, //OK. CSV ends with ",". There are 3 matches: 'hello' 'world' 'end'
aa,bb,cc //NOT ok. CSV doesn't end with ",". No matches.
我向the regex suggested by @Denomales提问。如果CSV包含带引号的部分,则始终存在仅包含引号的匹配项。有可能避免它吗?
答案 0 :(得分:0)
谈到regex suggested by @Denomales,我们可以做些什么。
为确保我们只在最后匹配字符串和逗号,您可以在模式的开头添加一个正面的预测(在下面标有^
):
(?=.*,$)(?:^|,)"?((?(1)[^"]*|[^,"]*))"?(?=,|$)
^^^^^^^^ |
如果您不想捕获条目分隔标记(引号),则可以删除(?=[^"]|(")?)
预测(上面标有|
)。
请参阅demo
<强>更新强>
我看到你已经发布了上述线程的2个答案。您的正则表达式几乎就是您所需要的,只需添加前瞻和跳过转义实体的方法:
(?=.*,$)(?:"((?:\\.|[^"])*)"|([^,]*))(?:[,])
请参阅Demo 2
答案 1 :(得分:0)
Thanx @stribizhev,它完美无缺。
如果我理解正确,逗号也可以逃脱:
res
仅为了完整性: - )