Обратите внимание, что ^
соответствует началу строки (или строки, в зависимости от значения RegExp.Multiline
), а $
соответствует концу строки (или строки).Таким образом, ваше регулярное выражение не будет работать.
Чтобы получить письмо из <...>
скобок после Reply-To:
подстроки, вы можете использовать
Reply-To:[^<>]*<([^<>@\s]+@[^<>\s]+)>
См. regex demo
Подробности
Reply-To:
- буквенная строка [^<>]*
- 0+ символов кроме >
и <
<
- <
char ([^<>@\s]+@[^<>\s]+)
- Группа захвата 1 (доступ к этому значению с помощью match.Submatches(0)
): один или несколько символов кроме<
, >
, @
и пробел, после которых следует @
, а затем один или несколько символов, отличных от <
, >
, и пробел >
- a >
char.
Код VBA:
Sub DemoFn()
Dim re, targetString, colMatch, objMatch
Set re = New regexp
With re
.pattern = "Reply-To:[^<>]*<([^<>@\s]+@[^<>\s]+)>"
.Global = True
End With
targetString = "Reply-To: John Doe <JohnDoe123@gmail.com>"
Set colMatch = re.Execute(targetString)
If colMatch.Count > 0 Then
Debug.Print colMatch(0).SubMatches(0)
End If
End Sub
Выход:
![enter image description here](https://i.stack.imgur.com/J4jyx.png)