一行で情報を取得するようにしました。次のような情報のリストがあります。
1 1 838028476391 4 23 36 P 1/820-01 *
2 1 838028476490 4 23 36 P 1/820-17 *
3 1 838028474271 4 23 36 P 1/820-21 *
4 1 838028476292 4 23 36 P 1/820-21 *
5 1 838028474263 4 23 36 P 1/820-23 *
6 1 838028473802 4 23 36 P 1/820-21 *
そして、すべての行から 12 桁の数字が必要です。私はこのコードを試しました:
Dim re As String
Dim re18 As String
re18 = "(\d{12})"
Dim r3 As New RegExp
r3.Pattern = re18
r3.IgnoreCase = True
r3.MultiLine = True
If r3.Test(Body) Then
Dim m3 As MatchCollection
Set m3 = r3.Execute(Body)
If m3.Item(0).SubMatches.Count > 0 Then
Dim number
For j = 1 To m3.Count
Set number = m3.Item(j - 1)
MsgBox ("Number: " + number)
Next
End If
End If
マクロをデバッグして時計で m3 を表示しても、最初の一致しか得られません。一致するのは 1 つだけです。また、\d{12} の後に量指定子 * または + を使用しようとしました
この正規表現を機能させるにはどうすればよいですか?
正規表現に関しては、別の質問があります。特別な単語の後に何かを一致させたい場合は、その単語をパターンの先頭に置き、その後ろに数字などを入れます。この正規表現を実行すると、パターンの先頭に置いた単語を含む情報または一致を取得できますか?! のように: "BUS \d{12}" 結果として数字だけが必要ですが、数字の前に BUS があることを知っています...