正则表达式删除外部引号

时间:2018-02-22 02:11:14

标签: regex

我有一个格式如下的文件:

"A", "B", "test "C"", "D"

我正在尝试使用正则表达式获取此输出:

A, B, test "C", D

我正在尝试删除“外部”引号

这是我的正则表达式:("(.*?)",|,"(.*?)")但是如果字符串格式为"test "C""

,则它无法正常工作

2 个答案:

答案 0 :(得分:1)

正则表达式在处理嵌套模式(如引号)时通常很差,但在仅捕获最外面的引号对的情况下,我们可以依靠贪婪来工作。

s/(?:"([^,]*)")/\1/g

https://regex101.com/r/olTWpF/1

您的方法有一些好主意,但使用不情愿的修饰符*?代替*意味着您的模式将匹配它所遇到的第一个结束语。在匹配结束引用之前,我的解决方案贪婪地捕获任何非分隔(非逗号)字符。这意味着该模式将接受并跳过内部引号。

@pariesz已正确指出此正则表达式将在引用数据中面临逗号问题。

答案 1 :(得分:0)

这应该有效:

(^"|")(.*?)(", |"$)

进行以下替换

$2, 

https://regex101.com/r/daPqGa/1