【发布时间】:2016-02-14 09:36:21
【问题描述】:
这与在其他地方解析文件之前清理文件有关,即格式错误/丑陋的 CSV。我看到很多删除/匹配某些字符串/字符/分隔符之间所有字符的示例,但我找不到特定字符串的任何示例。行的示例部分如下所示:
","Should now be allowed by rule above "Server - Access" added by Rich"\r
需要明确的是,这不是整行,而是整行用引号括起来并用“,”分隔,并以 ^M 结尾(Windows 换行符/回车符)。前面的“列”将被括起来在每一边用“,”。我可能也会使用它来删除行中较早出现的杂物。
我想要的是删除 "," 和 "\r ("Server - Access" - 这些) 之间的所有双引号,而不删除分隔符。或者,我可能只是找到它们并将它们替换为\" 为 Ruby CSV 库分隔它们。到目前为止,我有这个:
(?<=",").*?(?="\\r)
基本上匹配分隔符之间的所有内容。如果我替换 .*?对于任何东西,无论是字母、双引号等,我都得到零匹配。我做错了什么?
注意:这应该是 Ruby 兼容的。
【问题讨论】:
-
替换块内的匹配项。
-
这不是仅使用正则表达式就能完成的事情。您必须检查下一行的开头看起来如何,然后确定该行是否正确开始,或者它是否是嵌入式行尾的结果。如果是因为嵌入的线端,那么您需要适当地加入这些线。这不是一个简单的问题。