【问题标题】:Emacs replace a comma within a quoted string using Replace RegexpEmacs 使用 Replace Regexp 替换带引号的字符串中的逗号
【发布时间】:2015-01-08 08:43:12
【问题描述】:

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

1,2,"34,123",4

我正在尝试使用替换正则表达式替换引用字符串中的逗号 ("[^",]+),([^"]+") 和 $1$2

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

谢谢 鲍勃

【问题讨论】:

  • 感谢德鲁的回复。我会阅读建议的文件。我以前没有使用过 Emacs Lisp。您的意思是,一旦我使用 M-x eval-buffer 选择了包含我的数据的缓冲区,您发布的代码就会运行?

标签: regex emacs


【解决方案1】:

这就是你想要的:

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

您确实需要阅读有关 replace-regexp 的文档,以及有关 Emacs Lisp 中正则表达式的文档。

尝试以非交互方式使用replace-regexp 来执行替换引用匹配部分的操作是不可以的。您想使用一个循环重复匹配文本,然后调用replace-match 来替换它或它的一部分。

从研究 Elisp 如何表示正则表达式开始。然后学习 replace-match 用于引用部分匹配项的特殊语法 - 它不是 $1 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 2011-04-16
    相关资源
    最近更新 更多