簡體   English   中英

通過搜索從字符串中的正則表達式中獲取所有匹配項(/ <regexp> )

[英]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:]]\+\)\(.*):\)\@=

我嘗試使用具有不同配置的功能(例如matchlistmatchmatchstrmatchend (在循環中嘗試一些具有matchmatchstrmatchend瘋狂東西),但我沒有成功。

有沒有辦法在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.

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