Попробуйте вместо этого это для своей первой строки:
(?s)Subnet = (\d+\.\d+\.\d+\.\d+)\.\W*
Вы также захотите просмотреть каждую строку отдельно:
$output | % { $_ -match $dhcp_regex }
# Append | Out-Null
, если вы не хотите выводить каждую строку на экран.
$ соответствует [1]
Изменить: вот более полный пример.
$dhcp_regex = 'Subnet = (\d+\.\d+\.\d+\.\d+)'
$dhcp_regex2 = 'in use = (\d+)'
$output | ? { $_ -match $dhcp_regex -or $_ -match $dhcp_regex2} | % { $Matches[1] }
Изменить: вот многострочный пример.
$dhcp_regex = '(?m)Subnet = (\d+\.\d+\.\d+\.\d+)\.\r\n.*in use = (\d+)'
$output | Out-String | % { $_ -match $dhcp_regex }
$matches
кончик шляпы: http://www.vistax64.com/powershell/80160-powershell-regex-help.html
Редактировать: Похоже, (? M)
на самом деле не нужно. Out-String
- секретный соус.
Изменено регулярное выражение, которое вы предоставили, чтобы добавить дополнительный элемент данных.
$dhcp_regex='(?m)Subnet = (\d+\.\d+\.\d+\.\d+)\.\r\n.*in use = (\d+)\.\r\n.* free Addresses = (\d+)\.'
Теперь все работает нормально - очень признателен! Я могу потратить некоторое время, когда мне будет скучно (хе-хе), чтобы узнать, в каких тонкостях то, что мы делали до этого, терпело неудачу.