2012-02-13 20 views
1

Ok、長時間の訪問者、初めての投稿。PowerShell:結果の代わりに正規表現を出力

PowerShellでは、正規表現の結果が「True」または「False」である代わりに、その文字列を希望します。私はこれを行う他の方法があることを知っており、私はすでに動作しているバージョンがありますが、正規表現を使用して文字列を "抽出"したいと思います。例えば

$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アドレスをしたいと思い、 "真" を返します。

regexを使用してこれを実現する方法はありますか?

ありがとうございます!あなたはすでにそれは、ちょうどあなたが自由のために得る変数をチェックする必要があるんだ

答えて

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

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