用于从 CSV 中删除未转义引号的正则表达式
Regex to remove unescaped quotes from a CSV
我需要将 CSV 文件输入数据库。为此,我必须删除 "wild" 未转义的引号。
以下输入结构是可能的:
"aa";"bb";"cc";"dd";"ee"
"aa";"bb";"c "cc" c";"dd";"ee"
"aa";;"cc";"dd";"ee"
"aa";55;"cc";"dd";"ee"
表达式:
(?<!^|\"\;)\"(?!\;|$)
对输入示例的 #1 和 #2 有效,但在存在空元素 (#3) 或未加引号的数字字段 (#4) 时失败。另见 this Rubular example
任何有关如何涵盖这些案例的指示都将不胜感激。
编辑:
听从@Wiktor Stribiżew 的建议,我现在正在使用
(^"|"$|";+"|";\d+;"|";|;")|"
这也涵盖了一些额外的边缘情况,我在输入数据中已经确定,如图所示 here
以下解决方案仅能满足您当前的要求,并不是修复 CSV 中引号的通用解决方案:
(^"|"$|";+"|";\d+;")|"
替换为 </code>(或 <code>
,具体取决于您使用此正则表达式的位置)。
参见regex demo。
详情
(^"|"$|";+"|";\d+;")
- 第 1 组:
^"|
- "
在字符串的开头,或
"$|
- "
在字符串的末尾,或
";+"|
- "
,1+ ;
个字符,然后是 "
,或
";\d+;"
- ";
, 1+ 位, 然后 ;"
|
- 或
"
- 一个 "
字符。
我需要将 CSV 文件输入数据库。为此,我必须删除 "wild" 未转义的引号。
以下输入结构是可能的:
"aa";"bb";"cc";"dd";"ee"
"aa";"bb";"c "cc" c";"dd";"ee"
"aa";;"cc";"dd";"ee"
"aa";55;"cc";"dd";"ee"
表达式:
(?<!^|\"\;)\"(?!\;|$)
对输入示例的 #1 和 #2 有效,但在存在空元素 (#3) 或未加引号的数字字段 (#4) 时失败。另见 this Rubular example
任何有关如何涵盖这些案例的指示都将不胜感激。
编辑:
听从@Wiktor Stribiżew 的建议,我现在正在使用
(^"|"$|";+"|";\d+;"|";|;")|"
这也涵盖了一些额外的边缘情况,我在输入数据中已经确定,如图所示 here
以下解决方案仅能满足您当前的要求,并不是修复 CSV 中引号的通用解决方案:
(^"|"$|";+"|";\d+;")|"
替换为 </code>(或 <code>
,具体取决于您使用此正则表达式的位置)。
参见regex demo。
详情
(^"|"$|";+"|";\d+;")
- 第 1 组:^"|
-"
在字符串的开头,或"$|
-"
在字符串的末尾,或";+"|
-"
,1+;
个字符,然后是"
,或";\d+;"
-";
, 1+ 位, 然后;"
|
- 或"
- 一个"
字符。