繁体   English   中英

正则表达式匹配字段内 CSV 中的引号

[英]Regex to match quotes in CSV inside fields

我正在尝试编写一个正则表达式来匹配 CSV 字段中的双引号(并将它们替换为转义双引号,但替换部分很容易)。

所以我想要

"field1","field2" -> "field1","field2"
"field1","fie"ld2" -> "field1","fie""ld2"

我正在使用(?<;?)"(;!;)作为我的匹配表达式,它几乎可以工作 - 但它不处理行首或行尾的引号。我需要类似(?<;[?$])"(;![;^])不起作用,因为此处匹配了确切的$^字符 - 或(?<;(?|$))"(;!(;|^))这也不起作用,因为负向后看不能是可变长度。

请问这样做的正确方法是什么?

PCRE 正则表达式引擎不允许在 lookbehind 中捕获其中包含交替运算符的组。

您可以将您尝试过的正则表达式重新表述为

(?<!;|^)"(?!;|$)
(?<=[^;])"(?=[^;])

请参阅正则表达式演示此正则表达式演示

(?<;?|^)"(;!;|$)模式匹配不在字符串开头且前面没有紧接;"字符。 char(由于(?<;;|^) )并且后面没有紧接着; char 而不是在字符串的末尾(参见(?;;|$) )。

(?<=[^;])"(?=[^;])正则表达式匹配"前面紧跟一个不是;的字符。 (因此,不允许以字符串 position 开头)并且后面跟一个不是;的字符 (不允许字符串 position 结束)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM