Emacs使用Replace Regexp替换带引号的字符串中的逗号

时间:2015-01-07 22:19:14

标签: regex emacs

我有一个csv文件,其中包含带引号的字符串中的逗号,例如

1,2, “34123”,4

我正在尝试使用Replace Regexp替换带引号的字符串中的逗号 ( “[^”,] +),([^ “] +”) 同 $ 1 $ 2

然而,emacs返回0次发现。有什么想法吗?

由于 鲍勃

1 个答案:

答案 0 :(得分:1)

这就是你想要的:

(while (re-search-forward "\"[^\",]+\\(,\\)[^\"]+\"")
  (replace-match "" nil nil nil 1))

您真的需要阅读有关replace-regexp的文档,以及有关Emacs Lisp中的regexp的文档。

尝试以非交互方式使用replace-regexp来执行引用匹配部分的替换,这是禁忌。您希望使用重复匹配文本的循环,然后调用replace-match来替换它或部分文本。

首先研究Elisp如何表示正则表达式。然后了解replace-match用于引用匹配部分的特殊语法 - 它不是$1等。