gpt4 book ai didi

regex - 如何删除emacs中的正则表达式匹配文本?

转载 作者:行者123 更新时间:2023-12-04 16:56:02 25 4
gpt4 key购买 nike

如何删除一些与 emacs 中的正则表达式匹配的文本?

我想使用:
'(query-replace-regexp PATTERN EMPTY)
和:
'(replace-regexp PATTERN EMPTY)
但他们抛出:
perform-replace: Invalid regexp: "Premature end of regular expression".

最佳答案

通常,您可以使用空字符串 "" 删除与给定正则表达式匹配的文本。作为您提到的两个功能中的替代品。但是,正如上面评论中提到的其他人,您的正则表达式是错误的。

例如,如果您的缓冲区包含以下文本:

1. My todo list
1.1. Brush teeth
1.2. Floss
2. My favorite movies
2.1. Star Wars episodes 4-6

如果你想去掉每一行开头的数字,你可以把光标放在缓冲区的开头,然后输入 M-C-% (也就是说,您一次按下:ALT、CTRL、Shift、5)来调用命令 query-replace-regexp .你会被问到 minibuffer 中的两个参数,首先是匹配的正则表达式而不是替换字符串。
因此,在我们的示例中,您可以使用以下正则表达式:
\([0-9]\.\)+\s-

作为第一个参数,只需按 ENTER 作为第二个参数,即,不要指定任何内容作为替换。这样,替换是空字符串:您将与正则表达式匹配的内容替换为空。
query-replace-regexp会以交互方式询问您是否要替换或跳过每场比赛。这是 query-replace-regexp 中的“查询”部分看看您提出的正则表达式是否与您认为的相符,这很有帮助。如果你确定是这样,你可以输入 !让 Emacs 替换剩余的匹配项,而无需每次都询问。

如果您使用 M-x replace-regexp而不是 M-C-% Emacs 将替换每场比赛而不要求在每场比赛中输入。

对于当某行与正则表达式匹配时您想删除整行的特殊情况,还有 delete-matching-lines和它来自平行宇宙的邪恶的、留着山羊 mustache 的孪生兄弟 delete-non-matching-lines .

关于regex - 如何删除emacs中的正则表达式匹配文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4706777/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com