2012-02-13 79 views
1

好的,長時間的訪問者,首次發佈。PowerShell:正則表達式的輸出而不是結果

而不是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" 

就返回 「真」,而不是我想的IP地址。

有沒有使用正則表達式來完成此操作的方法?

謝謝!

回答

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 } 

享受:)

0

使用 - 更換:

$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'