У меня есть текстовый файл, который содержит диапазоны адресов IP определяются следующим образом:Regex для создания нескольких IP-адресов из шаблона
10.30.8.4
10.30.6.[10:12]
10.30.[8:9].4
[10:11].30.12.23
[10:11].[28:29].[11:12].[22:23]
, анализируя это с регулярным выражением, я ожидаю выхода быть
10.30.8.4
10.30.6.10
10.30.6.11
10.30.6.12
10.30.8.4
10.30.9.4
10.30.12.23
11.30.12.23
10.28.11.22
10.28.11.23
10.28.12.22
10.28.12.23
10.29.11.22
10.29.11.23
10.29.12.22
10.29.12.23
11.28.11.22
11.28.11.23
11.28.12.22
11.28.12.23
11.29.11.22
11.29.11.23
11.29.12.22
11.29.12.23
это то, что я до сих пор
$ips = Get-Content C:\temp\hosts.txt
$regex = [regex] "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
$regex.Matches($ips) | %{ $_.value }
Это только получает первый IP-адрес, но не другие
Возможно, я не понимаю, но это не так, как работает регулярное выражение. Вы можете сопоставить диапазоны сведенного ввода, но регулярное выражение не будет расширять их на IP-адреса. – briantist
есть. Ты прав. Regex не решит проблему. Необходимо использовать какой-то цикл для расширения. – user330612