Regexp组匹配号

时间:2015-04-28 15:00:26

标签: regex emacs

我在emacs中使用regexp替换将第一项和第三项的双引号替换为单引号。输入:
"term1" "term2" "term3" "term4"
(术语分​​隔符是标签)

想要输出:
'term1' "term2" 'term3' "term4"

我使用了下面的regexp搜索和替换字符串:
搜索:"\(.+?\)" "\(.+?\)" "\(.+?\)"

替换:'\1' "\2" '\3'

然而,实际输出取代了第一个和第四个术语而是:
'term1' "term2" "term3" 'term4'

我的正则表达式中有错误吗?

1 个答案:

答案 0 :(得分:2)

Elisp regexps很贪婪,所以我希望你的第一组实际上匹配整行,而不只是"term“。请尝试这样做:

"\([^"]+?\)" "\([^"]+?\)" "\([^"]+?\)"