(query-replace-regexp "from" "to")在文本文件中进行大量更改时,我会定期使用表达式.
我想要一个正则表达式,如果存在,用于删除所有不匹配的行.例如,在用于构建RPM的RedHat SPEC文件中,我想只留下以其开头的行/^Patch/(并删除所有不匹配的行).很容易grep -E '^Patch'但在Emacs中有没有办法?
我试过了:
(query-replace-regexp "^\\(?!Patch\\)[^\r\n]*$" "")
Run Code Online (Sandbox Code Playgroud)
无济于事(负面预测似乎不受支持).
有任何想法吗?
Gar*_*ees 88
尝试M-x keep-lines ^Patch改为:
(keep-lines REGEXP &optional RSTART REND INTERACTIVE)删除包含REGEXP匹配项的所有行.
还有相反的命令,M-x flush-lines它删除与正则表达式匹配的行.
小智 21
使用M-x delete-non-matching-lines和M-x delete-matching-lines
如果它只是您正在寻找的“补丁”,则可以使用以下命令识别不匹配^Patch的行
^([^P]|P[^a]|Pa[^t]|Pat[^c]|Patc[^h])[^\r\n]*$
Run Code Online (Sandbox Code Playgroud)
我承认,虽然它相当丑陋。=)
| 归档时间: |
|
| 查看次数: |
11462 次 |
| 最近记录: |