所以我正在寻找一种方法来获得像这样定义的函数(在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*zsdefs+.*):zes*$/=add(lst, submatch(0))/n
注意:这会更改搜索寄存器。
按照@Christian Brabandt的建议使用n
标志将阻止对缓冲区进行更改。
我还简化了正则表达式,以搜索以def
开头、以):
结尾的行
有关更多信息,请参阅:
:h :s
:h :s/=
:h /zs
:h :s_flags