编写选择 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
我正在编写一个 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