我如何复制正则表达式

时间:2012-11-06 02:14:35

标签: regex emacs

我想搜索引号中的所有短语,然后复制它们。

在Emacs中,我的搜索结果如下:

M-x replace-regexp <RETURN> "*" <RETURN> $& $& <RETURN>

但它不起作用......

1 个答案:

答案 0 :(得分:5)

"*"与引号分隔的字符串不匹配;它匹配一行中的任何(非零)引号。

在正则表达式中,*是修饰符,而不是文件名模式中的通配符。它表示“匹配前一个模式的0或更多”,因此"*"是“0或更多引号,后跟引号” - 即一行中的任意数量的引号。

“任何”的常用正则表达式是.*,它与“任何字符”(.)中的0或更多匹配。但那会包括引号; ".*"将匹配从第一个引号到最后一个的所有内容作为一个大字符串。你想要的是"[^"]*",它与引号匹配,后跟任意数量的非引号,后跟另一个引号。

此外,匹配的模式为\&,而非$&。这可能会更好:

M-x replace-regexp <RETURN> "[^"]*" <RETURN> \& \& <RETURN>