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