[英]Regexps in Elisp to include newlines
我正在嘗試在emacs(python-mode)中為Python文檔字符串添加一個特殊標記。
目前我能夠提取一行:
(font-lock-add-keywords
'python-mode
'(("\\(\"\\{3\\}\\.+\"\\{3\\}\\)"
1 font-lock-doc-face prepend)))
這現在有效:
"""Foo"""
但是很快就會有一個換行符:
"""
Foo
"""
它不再起作用了。 這是合乎邏輯的,因為.
不包括換行符( \\n
)。 我應該使用角色類嗎?
如何更正此正則表達式以包含""" """
之間的所有內容?
提前致謝!
"\\(\"\\{3\\}\\(.*\n?\\)*?\"\\{3\\}\\)"
“*?” construct是“*”的非貪婪版本。
最好和最簡單的方法是這個:
font-lock-add-keywords
'python-mode
'(("\\(\"\\{3\\}\\[^|]*?\"\\{3\\}\\)"
1 font-lock-doc-face prepend)))
您可以使用絕對不在“”“和”“之間的任何字符,而不是| 。
Cq Cj輸入了emacs regexps的換行符,所以只需添加一個包含的組。 和Cq Cj進入你的正則表達式。 當我使用regexp-tool來構建它們時,我的並沒有完全引用它,但我希望這些變化是顯而易見的。
\\("\\{3\\}\\(.\\|
C-qC-j \\)+"\\{3\\}\\)
抱歉,我無法更好地格式化,stackoverflow不同意我的看法。
它也可能在emacs中顯示為換行符。
這工作一半:
(font-lock-add-keywords
'python-mode
'(("\\(\"\\{3\\}\\(.\\|\n\\)*?\"\\{3\\}\\)"
1 font-lock-warning-face prepend)))
但是當添加RET時,標記就消失了。
建議的正則表達式"\\\\(\\"\\\\{3\\\\}\\\\(.*\\n?\\\\)*?\\"\\\\{3\\\\}\\\\)"
使我的emacs在打開時掛起。 py文件。
也許是時候訪問emacs郵件列表了..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.