Regex Emacs中的正则表达式搜索
我正试图编写一些Elisp代码来格式化一堆遗留文件 其思想是,如果一个文件包含一个类似于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
“
”的节,那么我想插入一个包含现有关键字的节。如果找不到该节,我想在同一节中插入我自己的默认关键字
我有以下功能:
(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
接受的无错误标志。