我正在编写一个正则表达式,它选择一个VBScript类及其名称。目前这是它的样子。
正则表达式:
Class\s*[a-zA-Z0-9_]*
实时代码演示: http://regexr.com/3bco8
没关系,但我想修改一下,以便它只选择" Class Person
"而不是在文本末尾选择单词class
。
答案 0 :(得分:4)
两个*
量词应替换为+
(一个或更多)。使用.Multiline标志,在开始时锚定并捕获类名可能是个好主意。是否要在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