Regex 主要模式的lisp emacs正则表达式语法
我正在努力学习如何编写emacs主模式。网上有很多很棒的教程(例如),但我正在努力学习正则表达式匹配的语法。例如,我试图理解为什么Regex 主要模式的lisp emacs正则表达式语法,regex,emacs,syntax,elisp,major-mode,Regex,Emacs,Syntax,Elisp,Major Mode,我正在努力学习如何编写emacs主模式。网上有很多很棒的教程(例如),但我正在努力学习正则表达式匹配的语法。例如,我试图理解为什么 ”((“\”\(\(?:.\ \ \ \n\)*?[^\\]\)\” 从 匹配双引号之间的任何内容。此材质: 这似乎无法解释 还有更好的资源吗?回答您关于regexp做什么的问题--- 您引用的示例中的regexp实际上是“\”\(\\(?:.\\\\\\\n\)*?[^\\]\\)\” 要匹配的部分包括: \”,它只匹配一个“字符---它位于regexp的开头和
”((“\”\(\(?:.\ \ \ \n\)*?[^\\]\)\”
从
匹配双引号之间的任何内容。此材质:
这似乎无法解释
还有更好的资源吗?回答您关于regexp做什么的问题--- 您引用的示例中的regexp实际上是
“\”\(\\(?:.\\\\\\\n\)*?[^\\]\\)\”
要匹配的部分包括:
,它只匹配一个\”
字符---它位于regexp的开头和结尾“
- 一个组,包含
,后跟\\(?:.\\\\n\\)*?
。该组可能在那里,以便[^\\]
可以被告知对匹配的那部分进行处理,即匹配的字体锁定关键字
开头和结尾之间的部分“
,组的第一部分,匹配零个或多个字符---任何字符。\\(?:.\\\\n\\)*?
可以是*?
(相同的事情)。该*
匹配除换行符以外的任何字符,
匹配换行符。\n
表示这两个字符都可以\\\\\\124;
匹配除反斜杠([^\\]
)之外的任何字符\
“
字符之间匹配零个或多个字符的regexp呢?大概是因为用户希望确保结尾”
没有被转义(通过反斜杠)但是,请注意,regexp要求“
字符之间至少有一个字符,因此regexp与空字符串”
不匹配
一个好的资源是:。谢谢@Drew,这非常有帮助!但是你包含的资源链接让我感到困惑。它没有解释
\\
工作的原因,也没有解释:
。关于regexps的最佳参考文档,它解释了\\
和:
,是Elisp手册。从node开始xpressions
。这两种表达式都在nodeRegexp Backslash
中进行了解释。有关Lisp字符串中反斜杠的使用,请参见nodeSyntax for Strings
。请记住,Info中的i
是查找内容的朋友,而g
在显示节点“Regexp Special”时会直接将您带到给定的node,这显然涵盖了一些特殊情况,您应该能够向上查看“Regexps的语法”,而不是向试图提供帮助的人投反对票。
(define-derived-mode rich-text-mode text-mode "Rich Text"
"text mode with string highlighting."
;;register keywords
(setq rich-text-font-lock-keywords
'(("\"\\(\\(?:.\\|\n\\)*?[^\\]\\)\"" 0 font-lock-string-face)))
(setq font-lock-defaults rich-text-font-lock-keywords)
(font-lock-mode 1))