Elisp 中的正则表达式以包含换行符

标签 regex emacs elisp

我正在尝试在 emacs(python 模式)中向 Python 文档字符串添加特殊标记。

目前我能够提取一行:

(font-lock-add-keywords
 'python-mode
 '(("\\(\"\\{3\\}\\.+\"\\{3\\}\\)"
    1 font-lock-doc-face prepend)))

这现在有效:
"""Foo"""

但是很快就会有一个换行符,比如:
"""
Foo

"""

它不再起作用了。这是合乎逻辑的,因为 .不包括换行符( \n )。
我应该使用字符类吗?

如何更正此正则表达式以包含 """ """ 之间的所有内容?

提前致谢!

最佳答案

"\\(\"\\{3\\}\\(.*\n?\\)*?\"\\{3\\}\\)"

这 ”*?”构造是“*”的非贪婪版本。

关于Elisp 中的正则表达式以包含换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/320590/

相关文章:

mysql - 如何在 MySQL 正则表达式中引用捕获组?

c# - 正则表达式平衡组

regex - 为什么 -name 可以工作,但我无法在 Mac 终端中使用 -regex?

emacs 术语模式无法识别命令

java - 尝试在 emacs 中安装 malabar-mode,得到 "Cannot open load file, malabar-mode"

emacs - 在Emacs中,如何在带有字体特征的迷你缓冲区中显示消息?

regex - 用另一个重复字符替换重复字符

emacs - 过滤不包含特定 PROPERTY 的标题

emacs - 如何调用 emacs 中选择的最后一个区域?

regex - rx-to-string 和 no-group 参数