我在用C#逐行检查
示例数据:
bob jones,123,55.6,,,"Hello , World",,0
jim neighbor,432,66.5,,,Andy "Blank,,1
john smith,555,77.4,,,Some value,,2
Regex to pick commas outside of quotes不解析第二行,它是最接近的。
我在用C#逐行检查
示例数据:
bob jones,123,55.6,,,"Hello , World",,0
jim neighbor,432,66.5,,,Andy "Blank,,1
john smith,555,77.4,,,Some value,,2
Regex to pick commas outside of quotes不解析第二行,它是最接近的。
5条答案
按热度按时间ru9i0ody1#
尝试以下正则表达式:
(?!\B"[^"]*),(?![^"]*"\B)
下面是一个演示:
regex101 demo
"
没有右引号。,r"a string",10
,因为"
边缘上的字母将创建单词边界,而不是非单词边界。替代版本
(".*?,.*?"|.*?(?:,|$))
这将匹配内容和逗号,并与充满标点符号的值兼容
regex101 demo
wgx48brx2#
下面的正则表达式用于解析一行中的每个字段,* 而不是 * 整行
应用有条不紊的和绝望的regex技术:分而治之
事例:字段不包含引号
[^,"]*(,|$)
大小写:字段正好包含两个引号
[^,"]*"[^"]*"[^,"]*(,|$)
大小写:字段仅包含一个引号
[^,"]*"[^,"]$
[^,"]*"[^"],(?!.*")
既然我们有了所有的案子,我们就|把所有的东西放在一起,享受由此产生的怪物。
ki0zmccv3#
试试这个模式
".*?"(*SKIP)(*FAIL)|,
Demofdx2calv4#
368yc8dk5#
Vasili Syrakis给出的最佳答案不适用于引号内的负数,例如:
以下正则表达式可用于此目的:
但我在这部分输入上并不成功: