7

我有一个逗号分隔和引号限定的数据源。一个 CSV。但是,数据源提供者有时会做一些不稳定的事情。我已经补偿了除其中一个之外的所有问题(我们逐行读取文件,然后在清理后将其写回),当我的 regex-fu 非常弱时,我正在寻找解决最后一个问题.

在另一个带引号的字符串中匹配带引号的字符串

所以这是我们的示例字符串...

"foobar", 356, "Lieu-dit "chez Métral", Chilly, FR", "-1,000.09", 467, "barfoo", 1,345,456,235,231, "935.18"

我正在寻找匹配子字符串"chez Métral",以便用子字符串chez Métral替换它。理想情况下,尽可能少的代码行。最终目标是在替换已经完成的情况下将行写回(或将其作为方法返回值返回)。

所以我们的示例字符串最终会变成......

"foobar", 356, "Lieu-dit chez Métral, Chilly, FR", "-1,000.09", 467, "barfoo", 1,345,456,235,231, "935.18"

我知道我可以定义一个模式,例如(?<quotedstring>\"\w+[^,]+\")匹配带引号的字符串,但是我的 regex-fu 很弱(数据库开发人员,几乎从不使用 C#),所以我不确定如何匹配命名组中的另一个带引号的字符串quotedstring


仅供参考:对于那些注意到用逗号格式化但没有引号限定的大整数的人来说,这已经被处理了。随机使用行分隔符(有时是 CR,有时是 LF)也是如此。作为其他问题...

4

1 回答 1

4

换成这个regex

(?<!,\s*|^)"([^",]*)"

现在将其替换为$1

在这里试试


"与它一起逃脱""将成为

(?<!,\s*|^)""([^"",]*)""
于 2012-11-27T16:48:04.917 回答