【发布时间】:2015-09-19 14:50:48
【问题描述】:
我正在尝试从字符串中检索 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 地址作为输出提供给我们。
【问题讨论】:
-
感谢您的建议,但如果我尝试
'IP_10.10.22.45' -match "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$",它不起作用并给我$False而不是号码。 -
我使用您链接中的 ExtractValidIpAddress 函数成功测试了每个 IP 地址。
-
是的,它确实给出了
$True或$False,但它没有提取与Test-Connection一起使用的数字。 -
移除锚点... ^,$
-
如果我尝试这个
'IP_10.10.22.45' -match "(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"它不会给出正确的输出,甚至在$Matches中也不会。
标签: regex powershell