我正尝试使用RegEx从多行字符串中获取数据块。VBScript正则表达式 - 查找模式之间的数据块
要搜索的字符串
***** a.txt 17=xxx 570=N 55=yyy ***** b.TXT 17=XXX 570=Y 55=yyy ***** ***** a.txt 38=10500.000000 711=1 311=0000000006630265 ***** b.TXT 38=10500.000000 311=0000000006630265 *****
我需要 - 东西之间*****阻止
17=xxx 570=N 55=yyy 17=XXX 570=Y 55=yyy 38=10500.000000 711=1 311=0000000006630265 38=10500.000000 311=0000000006630265
到目前为止我的代码
Set objRegEx = CreateObject("VBScript.RegExp") objRegEx.Global = True objRegEx.MultiLine = True objRegEx.IgnoreCase = True objRegEx.Pattern = "\*\*\*\*\*(?:.|\n|\r)*?\*\*\*\*\*" Set strMatches = objRegEx.Execute(objExec.StdOut.ReadAll()) If strMatches.Count > 0 Then For Each strMatch In strMatches Wscript.Echo strMatch Next End If Set objRegEx = Nothing
谢谢Wiktor。几个问题与这个模式 - 1)标题也提取(例如***** a.txt)。我不需要那个。 2)它也匹配*****&***** a.txt之间的空行。 –
好吧,2)是真实的,但它很容易处理与前瞻(见我更新的答案)。至于1),我说你必须访问'strMatch.Submatches(0)'中的第一项。注意你不需要设置'objRegEx.MultiLine = True'。 –
当我使用第二个正则表达式时,我在最后得到了*****,当我使用第一个正则表达式时,我得不到它。 –