Наличие трудности, заставляющей многострочный Powershell regex работать - никакие соответствия

Большинство MDAs имеет свой собственный конфигурационный файл, который может использоваться для определения вариантов доставки, таких как передача правил. Посмотрите procmail мини-FAQ, если Ваш сервер использует procmail.

2
задан 19 April 2012 в 23:01
2 ответа

Попробуйте вместо этого это для своей первой строки:

(?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 - секретный соус.

3
ответ дан 3 December 2019 в 10:12

Изменено регулярное выражение, которое вы предоставили, чтобы добавить дополнительный элемент данных.

$dhcp_regex='(?m)Subnet = (\d+\.\d+\.\d+\.\d+)\.\r\n.*in use = (\d+)\.\r\n.* free Addresses = (\d+)\.'

Теперь все работает нормально - очень признателен! Я могу потратить некоторое время, когда мне будет скучно (хе-хе), чтобы узнать, в каких тонкостях то, что мы делали до этого, терпело неудачу.

1
ответ дан 3 December 2019 в 10:12

Теги

Похожие вопросы