我有一个格式如下的文件:
"A", "B", "test "C"", "D"
我正在尝试使用正则表达式获取此输出:
A, B, test "C", D
我正在尝试删除“外部”引号
这是我的正则表达式:("(.*?)",|,"(.*?)")
但是如果字符串格式为"test "C""
答案 0 :(得分:1)
正则表达式在处理嵌套模式(如引号)时通常很差,但在仅捕获最外面的引号对的情况下,我们可以依靠贪婪来工作。
s/(?:"([^,]*)")/\1/g
https://regex101.com/r/olTWpF/1
您的方法有一些好主意,但使用不情愿的修饰符*?
代替*
意味着您的模式将匹配它所遇到的第一个结束语。在匹配结束引用之前,我的解决方案贪婪地捕获任何非分隔(非逗号)字符。这意味着该模式将接受并跳过内部引号。
@pariesz已正确指出此正则表达式将在引用数据中面临逗号问题。
答案 1 :(得分:0)