簡體   English   中英

Elisp中的Regexp包含換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM