Powershell 从阵列中查找所有IP地址

Powershell 从阵列中查找所有IP地址,powershell,powershell-v6.0,Powershell,Powershell V6.0,我有很多数组,看起来像 $a = 'Handshake', 'Success', 'Status', 200, '192.30.253.113', 'OK', 0xF 此阵列中包含的信息可能不同,但其中始终有一个或多个IP地址,最多三个。我正在寻找一种从数组中提取这些地址的方法。最简单的方法是什么?请注意,阵列中IP地址的位置各不相同。Regexp可能是最快的方法: $a -match '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b

我有很多数组,看起来像

$a = 'Handshake', 'Success', 'Status', 200, '192.30.253.113', 'OK', 0xF

此阵列中包含的信息可能不同,但其中始终有一个或多个IP地址,最多三个。我正在寻找一种从数组中提取这些地址的方法。最简单的方法是什么?请注意,阵列中IP地址的位置各不相同。

Regexp可能是最快的方法:

$a -match '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'

Regexp可能是最快的方法:

$a -match '\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b'
或者,如果您想确保IP地址有效,请使用@JulienNury所示的正则表达式


或者,如果您想确保IP地址有效,请使用@JulienNury所示的正则表达式。假设您有多个数组,如$a、$b、$c等。您可以使用正则表达式-

$arr = @()
$pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

$a, $b, $c | Foreach {if ([Regex]::IsMatch($_, $pattern)) {
           $arr += [Regex]::Match($_, $pattern)
            }
        }
$arr | Foreach {$_.Value.Trim()}

现在,$arr将拥有所有多个数组中的所有IP地址。

假设您有多个数组,如$a、$b、$c等。您可以使用正则表达式-

$arr = @()
$pattern = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"

$a, $b, $c | Foreach {if ([Regex]::IsMatch($_, $pattern)) {
           $arr += [Regex]::Match($_, $pattern)
            }
        }
$arr | Foreach {$_.Value.Trim()}