你好正则表达专家,
从来没有一个字符串操作问题,直到现在我无法用正则表达式解决,至少以一个优雅的方式使用一步.以下是我正在使用的示例数据:
0,"section1","(7)禁止在美国境外交付'证书'.由于1940年法规第339条,68 /和现行法律第341条在其陈述中明确规定应提供证书公民,只有当这样的个人在美国境内时,很明显该文件不能也不能在美国境外交付.",http://www.google.com/
1, "第2节" ,, HTTP://www.google.com/
2, "SECTION3", ",,",HTTP://www.google.com/
这是一个更大的CSV文件的一部分.使用一个优雅的正则表达式,我只想用双引号字符(_)替换双引号中出现的所有逗号.重要的是,正则表达式不会替换引号之外的任何逗号,因为这会弄乱CSV数据结构.
谢谢,汤姆
-
澄清:
对不起伙计们,我在没有完全澄清我的情况的情况下发布了这个问题,所以让我总结如下:
""或"""等表示,因此可以事先轻松替换它们).使用上面的示例文本,这是运行正则表达式替换后应该是什么样子(应该总共有5个替换):
0,"SECTION1","(7)在美国以外的'证书’禁止.交货自1940年statute_ 68的两部分339 /和本法第341是明确在他们的声明中表示,证书应提供的citizen_只有当这样的个人在美国境内时才会显示_很明显,该文件不能也不能在美国境外发送.",http://www.google.com/
1, "第2节" ,, HTTP://www.google.com/
2, "SECTION3", "__",HTTP://www.google.com/
Ala*_*ore 15
我会帮助你,但你必须承诺停止使用"优雅"这个词.最近一直在努力工作,值得休息.:P
(?m),(?=[^"]*"(?:[^"\r\n]*"[^"]*")*[^"\r\n]*$)
Run Code Online (Sandbox Code Playgroud)
如果在逗号和记录结尾之间有奇数个引号,则匹配逗号.我假设一种标准的CSV格式,其中记录在未包含在引号中的下一行分隔符处结束.行分隔符在引用字段内是合法的,如果它们与另一个引号一起转义,则为引号.
根据您使用的正则表达式风格,您可能必须使用\r?$而不是仅使用$.例如,在.NET中,只有linefeed(\n)被视为行分隔符.但在Java中,$符合之前\r的\r\n,但不是之间的\r和\n(除非你设置UNIX_LINES模式).