我试图从字符串中检索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
到目前为止,我已经尝试了正则表达式的建议here,但他们没有在变量$Matches
中将IP地址作为输出。
答案 0 :(得分: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 }