對於RegExp是如何工作的,我略感混淆。我很高興使用它來搜索字符串,使用記事本++,但是我現在試圖通過VBScript中的字符串進行搜索,並且在記事本++中工作的RegExps似乎與VBScript不兼容。我錯誤地推測,正則表達式是一種標準。無論如何。VBScript正則表達式不匹配
我試圖通過搜索的字符串是:
"kcabllaCsrevirD -) 0x0 = TLUSERH ('FNI.TRWTS\049BE47424A6-2898-65A4-3538-602212F0\#\$1#40C0010B$gkPrevirD_O_\10RPAFJUOS\\' egakcaP revirD 8202=DI
我試圖找出:
FNI.TRWTS\
使用記事本++,並試圖按照如語法時纔在this MSDN article我描述已經拿出:
.*?fni\..*?\\
任何人都可以在這裏指出我正確的方向嗎?我有其他的正則表達式在VB中工作,所以我相當高興,我的VB是確定的。
對於字符串的一些背景 - 我已經從DISM日誌中翻轉了一行文本,並試圖提取驅動程序名稱,因此希望挑選出fni.*
,然後將其反轉回*.inf
。我這樣做的原因是,雖然我可以得到正則表達式來搜索非貪婪(.*?
)我似乎無法找到匹配最後第一個方法。
Set objFso = CreateObject("Scripting.FileSystemObject")
Set TxtDismLog = objFSO.GetFile("C:\Windows\SysWow64\CCM\Logs\dism.log").OpenAsTextStream(1,-2)
Set TxtDriverOutput = objFSO.CreateTextFile("C:\Program Files\Sam\drivers.log", 8, True)
Set objRegEx = CreateObject("VBScript.RegExp")
Set objRegEx2 = CreateObject("VBScript.RegExp")
objRegEx.Global = True
objRegEx.IgnoreCase = True
objRegEx.Pattern = "Found \d driver package"
objRegEx2.Global = True
objRegEx2.IgnoreCase = True
objRegEx2.Pattern = "\bfni\.[^\\]*\\"
txtDriverOutput.WriteLine Now() & Chr(32) & "Begin DISM Driver Scan"
Do While TxtDismLog.AtEndOfStream <> True
txtline = txtDismLog.ReadLine
If objRegEx.Test(txtline) Then
h = InStr(txtline,"Found")
i = Mid(txtline,h+6,1)
Do While i <> 0
i = i - 1
txtline = txtDismLog.ReadLine
txtlinebwd = StrReverse(txtline)
regfindbwd = objRegEx2.Execute(txtlinebwd)
regfind = StrReverse(regfindbwd)
txtDriverOutput.WriteLine regfind
Loop
End If
Loop
字符串中已知什麼? 'fni.'?順便說一句,哪個標籤是正確的:vb.net或vbscript?請顯示你的代碼。 –
只需使用fni \ .. *?\\與忽略大小寫標誌。 – sln
我不認爲我可以使用fni \ .. *?\\,隨着字符串的進一步發生,值可能會再次出現。我現在要添加完整的代碼 –