Извлечение IP-адресов в Microsoft Outlook с использованием макросов

Я пытаюсь извлечь IP-адреса ВСЕ в теле сообщения Outlook из приведенного ниже примера здесь.

Я попытался заменить регулярное выражение на:

With Reg1
    .Pattern = "((P130\w*)\s*(\w*)\s*(\w*)\s*(\w*)\s*([\d-\.]*))"
End With

To:

With Reg1
    .Pattern = "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))"
End With

Но он соответствует только одному октету.

Пример текста:

The IP from 192.168.10.2 needs attention.
The IP from 192.168.11.3 needs attention.
The IP from 192.168.12.4 needs attention.

В настоящее время он соответствует только 168

Добавлены дополнительные скобки и теперь соответствует IP-адресу first в теле сообщения, но не всем остальным.

Полный код ниже:

Опция Явная  Частный Const xlUp As Long = -4162

Sub CopyToExcel (olItem As Outlook.MailItem)  Dim xlApp As Object  Dim xlWB As Object  Dim xlSheet As Object  Dim vText, vText2, vText3, vText4, vText5 Как вариант  Dim sText As String  Dim rCount As Long  Dim bXStarted As Boolean  Dim enviro As String  Dim strPath As String  Dim Reg1 As Object  Dim M1 As Object  Dim M As Object

enviro = CStr (Environ ( "USERPROFILE" )) 'путь книги  strPath = enviro и "\ Documents\test.xlsx"    Вкл.    Установите xlApp = GetObject (, "Excel.Application" )    Если Err < > 0 Then        Application.StatusBar = "Подождите, пока откроется источник Excel..."        Установите xlApp = CreateObject ( "Excel.Application" )        bXStarted = True    Конец Если    По ошибке GoTo 0    'Откройте книгу для ввода данных    Установите xlWB = xlApp.Workbooks.Open(strPath)    Установите xlSheet = xlWB.Sheets( "Sheet1" )

'Find the next empty line of the worksheet rCount = xlSheet.Range("B" & xlSheet.Rows.Count).End(xlUp).Row rCount = rCount + 1 sText = olItem.Body Set Reg1 = CreateObject("VBScript.RegExp") ' \s* = invisible spaces ' \d* = match digits ' \w* = match alphanumeric With Reg1 ' .Pattern = "((P130\w*)\s*(\w*)\s*(\w*)\s*(\w*)\s*([\d-\.]*))" .Pattern = "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))" '.Pattern = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$" End With If Reg1.Test(sText) Then ' each "(\w*)" and the "(\d)" are assigned a vText variable Set M1 = Reg1.Execute(sText) For Each M In M1 vText = Trim(M.SubMatches(1)) vText2 = Trim(M.SubMatches(2)) vText3 = Trim(M.SubMatches(3)) vText4 = Trim(M.SubMatches(4)) ' vText5 = Trim(M.SubMatches(5)) Next End If xlSheet.Range("B" & rCount) = vText xlSheet.Range("c" & rCount) = vText2 xlSheet.Range("d" & rCount) = vText3 xlSheet.Range("e" & rCount) = vText4 xlSheet.Range("f" & rCount) = vText5 xlWB.Close 1 If bXStarted Then xlApp.Quit End If Set M = Nothing Set M1 = Nothing Set Reg1 = Nothing Set xlApp = Nothing Set xlWB = Nothing Set xlSheet = Nothing End Sub

+4
источник поделиться
1 ответ
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

http://www.regextester.com/22

Регулярное выражение для соответствия имени хоста DNS или IP-адресу?

+1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос