正则表达式从字符串中提取IP地址

Dar*_*te1 -1 regex powershell

我正在尝试从字符串中检索IP地址.我绝对不是第一个提出这个问题的人,但我找不到能够完全满足我们需要的答案.

如果字符串中的某个位置是xxx.xxx.xxx.xxx的组合,无论它周围的文本如何,它都应该用中间的点提取这个数字.所以它可以用于Test-Connection.

我不是要确定IP地址是否有效,但我试图从字符串中检索IP地址.即使它是无效的,比如说900.999.800.254.

例:

Input             Expected result
-----             ---------------
IP_10.57.50.91    10.57.50.91
10.57.50.73       10.57.50.73
10.58.4.37 IP     10.58.4.37
ip 10.63.1.22     10.63.1.22
BELPRLIXH300      $False
ip 10.63          $False
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试过这里建议的正则表达式,但它们并没有在变量中给出IP地址作为输出$Matches.

Dav*_*ant 5

$ips = @('IP_10.57.50.91',
    '10.57.50.73',
    '10.58.4.37 IP',
    'ip 10.63.1.22',
    'BELPRLIXH300',
    'ip 10.63'
)

$regex = [regex] "\b(?:(?: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]?)\b"

$regex.Matches($ips) | %{ $_.value }
Run Code Online (Sandbox Code Playgroud)