2015-08-27 25 views
0

我想找到三重報價單行文檔字符串的所有實例:Emacs的查找/替換上一行三重引用文檔字符串宏

def foo(bar): 
    """Frobnicate bar.""" 
    ... 

,並放置在新行後三聯報價:

def foo(bar): 
    """Frobnicate bar. 
    """ 
    ... 

即與第二組在自己的行報價(三重引號也可以拼寫'''...'''

我遇到麻煩分組括號,即

(defun single-line-tqstring() 
(interactive) 
(re-search-forward 
    "^ +\"\"\".*\"\"\"$")) 

將找到單行三重引號字符串的下一個實例。爲了考慮不同的報價和挽救我需要創建一些羣體的壓痕,但是這並沒有發現什麼:

(defun single-line-tqstring() 
(interactive) 
(re-search-forward 
    "^\(+\)\([\"']\{3\}\).*\2$")) 

single-line-tqstring: Search failed: "^(+)([\"']{3}).*^B$"

難道我完全誤解的語法?

回答

1

好了,我已經找到了解決辦法

(defun fix-single-line-tqstring() 
(interactive) 
(replace-regexp 
    "^\\(+\\)\\([\"']\\{3\\}\\)\\([^\n]*\\)\\2$" 
    "\\1\\2\\3\n\\1\\2")) 

雖然反斜線有點眩目......(我敢肯定,必須有這樣做的更好的辦法..?)