regex - Emacs,删除所有不匹配的行?

标签 regex emacs

在文本文件中进行较大更改时,我会定期使用(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/

相关文章:

emacs - 如何从 shell 缓冲区切换到另一个

c - 为 C 字符串编写正则表达式

java - JAVA 的 replaceAll() 方法中的正则表达式元字符 "*"和 "*?"表现异常

php - 使用 preg_match PHP 从字符串中查找失败的行

javascript - 子字符串、拆分、字符串到数字和 RGB 到十六进制

Emacs lisp - 如何尝试/捕获处理错误?

emacs - `with-temp-file' 与 `org-map-entries' 的行为

emacs - 如何在 Windows 7 上的 emacs 中使用 Gmail

emacs - 如何配置 Emacs 使用可变字体来显示 LaTeX 公式的预览?

Python Pyparsing : Capture comma-separated list inside parentheses ignoring inner parentheses