我想搜索引号中的所有短语,然后复制它们。
在Emacs中,我的搜索结果如下:
M-x replace-regexp <RETURN> "*" <RETURN> $& $& <RETURN>
但它不起作用......
答案 0 :(得分:5)
"*"
与引号分隔的字符串不匹配;它匹配一行中的任何(非零)引号。
在正则表达式中,*
是修饰符,而不是文件名模式中的通配符。它表示“匹配前一个模式的0或更多”,因此"*"
是“0或更多引号,后跟引号” - 即一行中的任意数量的引号。
“任何”的常用正则表达式是.*
,它与“任何字符”(.
)中的0或更多匹配。但那会包括引号; ".*"
将匹配从第一个引号到最后一个的所有内容作为一个大字符串。你想要的是"[^"]*"
,它与引号匹配,后跟任意数量的非引号,后跟另一个引号。
此外,匹配的模式为\&
,而非$&
。这可能会更好:
M-x replace-regexp <RETURN> "[^"]*" <RETURN> \& \& <RETURN>