在文本文件中进行较大更改时,我会定期使用(query-replace-regexp "from""to")
表达式。
我想要一个正则表达式(如果存在),用于删除所有不匹配的行。例如,在用于构建 RPM 的 RedHat SPEC 文件中,我想仅保留其中以 /^Patch/
开头的行(并删除所有不匹配的行) )。使用 grep -E '^Patch'
就够简单了,但是 Emacs 有办法吗?
我尝试过:
(query-replace-regexp "^\\(?!Patch\\)[^\r\n]*$" "")
无济于事(否定前瞻似乎不受支持)。
有什么想法吗?
最佳答案
尝试 M-x keep-lines ^Patch 代替:
(keep-lines REGEXP &optional RSTART REND INTERACTIVE)
Delete all lines except those containing matches for REGEXP.
还有相反的命令,M-xlush-lines,它删除与正则表达式匹配的行。
关于regex - Emacs,删除所有不匹配的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214949/