使用现有字符串的VBScript RegEx模式匹配

时间:2018-06-21 15:17:08

标签: regex vbscript

早上好

我是VBScript的新手,现在对RegEx还不满意。我正在做一个项目,在该项目中,我需要将一个预先存在的字符串与文本文件中一行的开头匹配,然后将整个行放入一个字符串中。在测试中,我可以分配自己的字符串,但是在生产环境中,它将从应用程序中的对象中提取字符串。例如,字符串将为“ 0001”,文本文件中该行的开头将为0001,然后是我也需要将其应用于新字符串的其余文本。下面是我到目前为止的代码。我的问题是,我不知道如何将当前字符串应用于RegEx模式,或者不知道要执行此搜索的其他内容。

Sku         SkuId       Qty
============================
DEF-456     456         1
GHI-789     789         2
JKL-987     987         1

任何帮助将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:2)

以strCode开头的匹配行:

objRegEx.Pattern = "^" & strCode & ".*"

'^'     = Anchor to the start of the string
strCode = followed by your pattern
'.'     = followed by any character
'*'     = followed by zero or more occurrences of the previous character

因此正则表达式变为"^0001.*"

哦,你可以使用

objRegEx.Test(strSearchString)

查看字符串是否与您的模式匹配。

更新:测试脚本说明了如何首先转义非字母数字字符,然后执行比较:

Dim strCode
Dim strSearchStr
strCode = "0.0[1"
strSearchString = "0.0[1 - test string"

Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.Pattern = "([^A-Za-z0-9])"   ' Match non-alphanum chars
objRegEx.global = True
strCode = objRegEx.replace(strCode, "\$1")  ' Escape with a backslash
'msgbox strCode
objRegEx.Pattern = "^" & strCode & ".*"     ' Compare like before
if objRegEx.Test(strSearchString) then
  msgbox "match"
else
  msgbox "No match"
end if