PowerShell:输出正则表达式而不是结果

时间:2012-02-13 22:30:07

标签: regex string powershell extract

好的,长时间访客,第一次发帖。

而不是PowerShell告诉我正则表达式的结果是“真”或“假”,而是我想要字符串。我知道还有其他方法可以做到这一点,我已经有一个工作版本,但我想使用正则表达式“提取”字符串。

例如:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
$ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"

只返回“True”,而不是我想要的IP地址。

有没有办法使用正则表达式完成此操作?

谢谢!

2 个答案:

答案 0 :(得分:7)

你已经得到它,只需要检查你免费得到的变量:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
if ($ipconfig -match "\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b") { 
    $matches[0]
}

或者,您可以使用.NET对象:

$ipconfig = ipconfig | select-string "IPv4" | select-object -first 1
([regex]"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b").matches($ipconfig) | % { $_.value }

享受:)

答案 1 :(得分:0)

使用-replace:

 $ipconfig = ipconfig | select-string "IPv4" | select-object -first 1 
 $ipconfig -replace '.*\b(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\b.*','$1'