Regex Emacs中的正则表达式搜索

Regex Emacs中的正则表达式搜索,regex,emacs,elisp,Regex,Emacs,Elisp,我正试图编写一些Elisp代码来格式化一堆遗留文件 其思想是,如果一个文件包含一个类似于“”的节,那么我想插入一个包含现有关键字的节。如果找不到该节,我想在同一节中插入我自己的默认关键字 我有以下功能: (defun get-keywords () (re-search-forward "<meta name=\"keywords\" content=\"\\(.*?\\)\" />") (goto-char 0) ;The section I'm inser

我正试图编写一些Elisp代码来格式化一堆遗留文件

其思想是,如果一个文件包含一个类似于
”的节,那么我想插入一个包含现有关键字的节。如果找不到该节,我想在同一节中插入我自己的默认关键字

我有以下功能:

(defun get-keywords ()
      (re-search-forward "<meta name=\"keywords\" content=\"\\(.*?\\)\" />")
      (goto-char 0) ;The section I'm inserting will be at the beginning of the file
      (or (march-string 1)
          "Rubber duckies and cute ponies")) ;;or whatever the default keywords are
(取消获取关键字()
(向前搜索“”)
(goto char 0);我插入的节将位于文件的开头
(或(三月一日)
“橡胶鸭子和可爱的小马”);;或者不管默认关键字是什么

当函数未能找到其目标时,它返回
搜索失败:“[regex here]”
,并阻止其余的求值。有没有办法让它返回默认字符串并忽略错误?

使用“向前搜索”的额外选项,并以类似的方式构造它

(if (re-search-forward "<meta name=\"keywords\" content=\"\\(.*?\\)\" />" nil t)
    (match-string 1)
  "Rubber duckies and cute ponies")
(如果(向前搜索)“无”
(匹配字符串1)
“橡胶鸭子和可爱的小马”)

也可以考虑使用NIFY“RX”宏来编写正则表达式;它会更具可读性

(rx "<meta name=\"keywords\" content=\""
    (group (minimal-match (zero-or-more nonl)))
    "\" />")
(rx“”)
我最后做了
(保存短途旅行(如果(向前搜索“[regex here]”“nil t”)(匹配字符串1)“橡胶鸭子和可爱的小马”)
。感谢您将我指向
research forward
接受的无错误标志。