我需要回答的问题有一个非常相似的问题(Regex / Vim: Matching all except a pattern, where pattern is multi-line?):我需要将以下 Vim 正则表达式转换为 VBScript 正则表达式:
:%s/\%(^end\n*\|\%^\)\zs\_.\{-}\ze\%(^begin\|\%$\)//
基本上,我需要做的是获取方法之前、之间和之后的所有文本(不包括方法中的代码)。我已经有一个 VBScript 正则表达式来抓取方法和它们体内的代码,如下所示:
((?:(?:Public|Private)) (?:Sub|Function).+)\n(.*\n)*?End (?:Sub|Function)
以下是全局代码和方法代码的示例文本:
'-----------------------------------------------------------------------------------------
'
' the code: Header
'
'-----------------------------------------------------------------------------------------
Dim GLOBAL_VARIABLE_1
Dim GLOBAL_VARIABLE_2
Public Function doThis(byVal xml)
'' Created : dd/mm/yyyy
'' Return : string
'' Param : xml- an xml blob
return = replace(xml, "><", ">" & vbLf & "<")
GLOBAL_VARIABLE_1 = 2 + 2
doThis= return
End Function
msgbox GLOBAL_VARIABLE_1
Public Function doThat(byVal xPath)
'' Created : dd/mm/yyyy
'' Return : array
' 'Param : xPath
return = split(mid(xPath, 2), "/")
doThat = return
End Function
GLOBAL_VARIABLE_2 = 2 + 2
Public Function alsoDoThis(byRef obj)
'' Created : dd/mm/yyyy
'' Return : string
' 'Param : obj, an xml document object
For i = 0 To 4
return = return & "hi" & " "
Next
alsoDoThis = trim(return)
End Function
GLOBAL_VARIABLE_3 = 2 + 2
如何否定或翻转我拥有的 VBscript 正则表达式,或转换我需要的 Vim 正则表达式,以便在方法级代码之前、中间或之后获取所有全局级代码(不包括方法声明和“结束子/功能”部分)?