如果两个单词之间存在单词,这是 RegEx Only Return 匹配的延续
我正在尝试将 RegEx 与 vbScript 或 VBA 一起使用,并在字符串中查找所有出现的特定单词。该字符串来自一个大型配置文件并包含其他数据,但我可以使用另一个 RegEx 命令解析出我需要的字符串块。在我下面的测试例程中,它找到每个 OR'd 单词的第一次出现并停止。我试图返回找到的每个单词的所有出现和实例(如果它们存在于字符串中)。我似乎无法弄清楚如何让它循环或继续检查......
我还为以下内容制作了 RegEx 测试器链接: http ://regex101.com/r/zP8aT3
Sub TestRegEx_1()
Dim TestString, X
Dim objRegEx, f_objResults, f_Match
TestString = "edit GoodMatch1 ;mode" & vbCrLf & _
"Something Random" & vbCrLf & _
"KeyWord_2 A B and C and also D E" & vbCrLf & _
"Something Random" & vbCrLf & _
"Something Random" & vbCrLf & _
"KeyWord_3 1 A and 2 B" & vbCrLf & _
"Something Random" & vbCrLf & _
"KeyWord_1 1 2 and 3 and also 4 5" & vbCrLf & _
"Something Random" & vbCrLf & _
"exit"
Set objRegEx = CreateObject("VBScript.RegExp")
objRegEx.IgnoreCase = True
objRegEx.MultiLine = True
objRegEx.Global = True
objRegEx.Pattern = "^edit\s(.*?)\s\;mode[\S\s]*?(?=.*?\b(KeyWord_1|KeyWord_2|KeyWord_3|NonExistant_1)\b)(?=.*?\b(1|2|3|A|B|C|8|9|10|X|Y\Z)\b)[\S\s]*?exit$"
Set f_objResults = objRegEx.Execute(TestString)
For Each f_Match In f_objResults
'MsgBox f_Match
For Each X In f_Match.submatches
MsgBox X
Next
Next
End Sub
我想要达到的目标如下:
'Expected f_Match.SubMatches Output in a loop
'GoodMatch1
'KeyWord_2
'A
'B
'C
'KeyWord_3
'1
'A
'2
'B
'KeyWord_1
'1
'2
'3
或类似且可行的...如果需要任何其他信息,请告诉我。任何帮助是极大的赞赏。谢谢你!