编写选择 VBScript Class 及其名称的正则表达式

Writing Regex that selects a VBScript Class and it's Name

我正在编写一个 select 是 VBScript class 及其名称的正则表达式。目前是这样的。

正则表达式:

Class\s*[a-zA-Z0-9_]*

实时代码演示: http://regexr.com/3bco8

没问题,但我想修改一下,只 select 是“Class Person”,而不是 select 末尾的 class 一词正文。

两个 * 量词都应替换为 +一个 或多个)。使用 .Multiline 标志,在开始时锚定,并捕获 class 名称可能是个好主意。是否要在 Class 之前允许前导空格由您决定:

Option Explicit

Dim s : s = Join(Array( _
    "' Class ForgetIt" _
  , "whatever" _
  , " Class FindIt" _
  , "whatever" _
  , "End Class ' FindIt" _
  , "s = ""Class NotMe""" _
  , "CLASS MeToo" _
  , "End Class" _
), vbCrLf)
Dim r : Set r = New RegExp
r.Global = True
r.IgnoreCase = True
r.Multiline = True
r.Pattern = "^\s*Class\s+(\w+)+"
Dim m
For Each m In r.Execute(s)
    WScript.Echo m.SubMatches(0)
Next

输出:

cscript 31398009.vbs
FindIt
MeToo