[英]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.