Regex 如何使用TextMate在csv文件的每个值周围应用双引号?
我有一个csv文件,格式如下: 示例csv:Regex 如何使用TextMate在csv文件的每个值周围应用双引号?,regex,csv,textmate,Regex,Csv,Textmate,我有一个csv文件,格式如下: 示例csv: bear,brown,mean,large ant,black,strong,tiny cat,yellow,moody,small 如何在每个值周围使用双引号?我如何使用正则表达式来实现这一点 我正在使用TextMate(文本编辑器)查找/替换正则表达式。您可以从以下内容开始: find: , replace: "," 然后在开始和结束处添加一个“以下是正则表达式的重要部分。希望我在转换为textmate格式时能正确使用它: 搜索-([^,]
bear,brown,mean,large
ant,black,strong,tiny
cat,yellow,moody,small
如何在每个值周围使用双引号?我如何使用正则表达式来实现这一点
我正在使用TextMate(文本编辑器)查找/替换正则表达式。您可以从以下内容开始:
find: ,
replace: ","
然后在开始和结束处添加一个“以下是正则表达式的重要部分。希望我在转换为textmate格式时能正确使用它: 搜索-
([^,]*)(,|$)
替换-“$1”$2
搜索说明:查找每个非逗号的字符,直到到达逗号或行尾。捕获一个变量中要引用的字符串的匹配项,并捕获另一个变量中的逗号/行尾匹配项
替换说明:原始字符串、引号以及其后的逗号或行尾。这对我来说非常有用。是否先查找/替换行 然后简单地查找/替换,=>“,” 必须添加第一个引号,添加“标记”使其变得简单
谢谢,祝你好运。如果我没有弄错的话,我相信也有一种方法可以用同样的方式替换换行符(从而避免在每行的开始和结束处手动添加最终引号)。尽管文本编辑器中的这些字符可能有所不同……但在任何情况下,仅在文档的开头和结尾添加引号都是不够的,因为这样会将整个多行CSV文档转换为单行CSV文档。您是对的,textmate regexps似乎支持^和$之类的内容,可能可以用来解决以下问题:^(.*)$ => "$1"这主要在记事本++中起作用,但在每一行中都保留了第一个引号和最后一个引号。这篇堆栈溢出文章修正了这一点:@DrCord:Regex语法对于我所见过的几乎每个实现都略有不同,尤其是转义样式。综观这篇文章,我没有看到任何关于我的Regex的内容不应该与正确的转义一起工作g、 假设您的find/replace支持捕获、负字符类和“全局”匹配(即,在单个find/replace中同一行上有多个匹配)。例如,如果您使用的是VIM,find/replace命令将变为:
:%s/\([^,]*\)\(,\\\$\)/“\1”\2/g
-刚刚测试过它,它与OP的示例一起工作:)也许你漏掉了你的引号或者捕捉到了错误的引用?我的正则表达式的另一个特点是它不能处理已经被引用的东西,或者漏掉的逗号。对于许多简单的CSV,这就足够了。作为一个注释(对于这个古老且处理良好的问题),如果CSV在逗号后有一个前导空格,而您不想在引号中包含该空格,([^,]*)(,|$)