簡體   English   中英

VBScript正則表達式:匹配除多行模式以外的所有內容

[英]VBScript Regex: Match everything except multi-line pattern

有一個與我需要回答的問題非常相似的問題( Regex / Vim:匹配除模式以外的所有內容,其中模式是多行嗎? ):我需要將以下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正則表達式,以便在方法級代碼之前,之間或之后獲取所有全局級代碼(不包括方法聲明和“結束子/功能”部分)?

刪除所有過程和功能,剩下的就是您要尋找的東西。

text = "..."

Set re = New RegExp
re.Pattern = "((public|private)\s+)?(function|sub)[\s\S]+?end\s+(function|sub)"
re.Global  = True
re.IgnoreCase = True

rest = re.Replace(text, "")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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