これはRegEx の続きです 単語が 2 つの単語の間に存在する場合にのみ一致を返す
vbScript または VBA で RegEx を使用して、文字列内の特定の単語をすべて見つけようとしています。この文字列は大きな構成ファイルから取得され、他のデータが含まれていますが、必要な文字列のブロックを別の RegEx コマンドで解析できます。以下のテスト ルーチンでは、各 OR された単語の最初の出現を見つけて停止します。文字列内に存在する場合、見つかった各単語のすべての出現とインスタンスを返そうとしています。ループさせる方法やチェックを続ける方法がわかりません...
以下の正規表現テスター リンクも作成しました: 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
または、同様の実行可能なもの...追加情報が必要な場合はお知らせください。どんな助けでも大歓迎です。ありがとう!