gpt4 book ai didi

regex - emacs函数在正则表达式中按字面意义重新搜索\(\)组字符

转载 作者:行者123 更新时间:2023-12-04 18:12:00 26 4
gpt4 key购买 nike

我成功地交互使用了replace-regexp,用无引号的版本替换了下面显示的缓冲区中带引号的文本的每个实例。我搜索的正则表达式是

\"\([^\"]*\)\" 

而我插入的NEWTEXT是\1。
* "PROJECT START"
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: "0 days"
:TYPE: "Fixed Work"
:OUTLINE_LEVEL: 1
:END:

通过交互,居留权文本变成了下面的文本。
* PROJECT START
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: 0 days
:TYPE: Fixed Work
:OUTLINE_LEVEL: 1
:END:

我试图通过插入以下两行来进行相同的搜索并以编程方式替换
(while (re-search-forward "\"\([^\"]*\)\"" nil t)
(replace-match "\1" nil nil ))

在缓冲区的顶部并执行,但是它只是返回nil而没有找到单个匹配项。

当我省略
\( \) 

分组并将\1替换为\&
(while (re-search-forward "\"[^\"]*\"" nil t)
(replace-match "\&" nil nil ))

我将所有带引号的字符串替换为'&'。
* &
:PROPERTIES:
:ID: 1
:Unique_ID: 17
:DURATION: &
:TYPE: &
:OUTLINE_LEVEL: 1
:END:

我在这两个功能的文档中看到的所有内容都表明它们应该识别这些特殊字符,并且在此论坛上对其他问题的回答中使用的示例都使用了这些特殊字符。

谁能帮助我理解为什么不能正确解释分组和\&,\N,\字符?

最佳答案

您需要转义“(”,“)”和“\1”的“\”。 IE。:

(while (re-search-forward "\"\\([^\"]*\\)\"" nil t)
(replace-match "\\1" nil nil ))

关于regex - emacs函数在正则表达式中按字面意义重新搜索\(\)组字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11923923/

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