[英]Get all match from regexp in string as the result of search (/<regexp>)
所以我正在尋找一種方法來獲取函數定義的所有參數(在Python中),如下所示
def a_function(param1, param2="foo", somethingelse):
我做了一個正則表達式(對不起,您的眼睛,我不太擅長正則表達式),如果我在vim(/ regexp)中使用研究功能,它會匹配所有參數
\(def[[:blank:]]\+[_[:alnum:]]\+[[:blank:]]*(.*\)\@<=\([_[:alnum:]]\+[[:blank:]]*=\@=\|[_[:alnum:]]\+[[:blank:]]*,\@=\|\(,[[:blank:]]*\)\@<=[_[:alnum:]]\+\)\(.*):\)\@=
我嘗試使用具有不同配置的功能(例如matchlist
, match
, matchstr
, matchend
(在循環中嘗試一些具有match
, matchstr
和matchend
瘋狂東西),但我沒有成功。
有沒有辦法在vimscript的列表中獲取所有與正則表達式匹配的單詞?
如果可能的話,我真的很想保留這個正則表達式。
您可以使用替換並使用\\=
收集匹配項。
:let lst = []
:%s/^\s*\zsdef\s\+.*):\ze\s*$/\=add(lst, submatch(0))/n
注意:這導致更改搜索寄存器。
使用@Christian Brabandt建議的n
標志將防止更改緩沖區。
我還簡化了您的正則表達式,以搜索以def
開頭並以):
結尾的行):
有關更多信息,請參見:
:h :s
:h :s/\=
:h /\zs
:h :s_flags
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.