我使用Sublime Text 3并且我有一个包含单引号的CSV文件:
输入:
"col1", "col2", "col3", "col4", "col5"
"Cakes", "5" Carrots", "Pineapples'", ""Eggs"", "Apple 5" and 10""
...
使用正则表达式我想"中和"但不要删除不合适的单引号(例如5" Carrots
,""Eggs""
)和撇号(例如Pineapples'
)。
通过中和我特别指的是将\"
放在每个单引号/撇号前面,以便输出为:
输出:
"col1", "col2", "col3", "col4", "col5"
"Cakes", "5\"" Carrots", "Pineapples\"'", "\""Eggs\""", "Apple 5\"" and 10\"""
...
到目前为止的进展: 我想我需要2件来解决这个难题。
首先,我可以使用正则表达式(".*)(["])(.*")
找到并替换每个字段的引用
例如:
输入: "Hello 5" World"
查找: (".*)(["])(.*")
替换: \1\\\""\3
输出: "Hello 5\"" World"
。要重现这一点,您需要在sublime查找和替换工具栏上选择正则表达式和换行选项。
其次,我可以使用正则表达式([^,\n]+)
在csv文件中找到每个字段(在Sublime中打开)。有关详情,请参阅this上一个问题。
问题是如何使用这两种技术(或其他如果需要)来获取正则表达式以及正则表达式来替换具有单引号的每个字段(即在\"
之前)
如果你不认为这可以通过崇高和正则表达来完成,那么如果你能提出一种方法来做这件事就会很棒。
更多详情: 为了绝对清晰,解决方案应该包含一个常规表达式,用于查找CSV文件中的每个字段(在sublime中打开),其中包含单个引号。然后应该有一个正则表达式,在每个引号之前插入字符串{{1} }。