晴耕雨読

working in the fields on fine days and reading books on rainy days

PowerShell 正規表現で名前付きグループを使う

PowerShellの正規表現で名前付きグループを使うときは、-match 演算子では使えません。 代わりに、regexクラスのMatches(str, regex) メソッドを呼び出す必要があります。

名前付きグループとは (?<グループ名>正規表現) でマッチした部分を取得するときに、「グループ名」で取り出すことができる仕組みです。 名前付きグループを使うことで、プログラムが読みやすくなるメリットがあります。

使い方は以下の通りです。

$result = [regex]::Matches($line, '(?<Id>[0-9]+)\t(?<Name>[a-zA-Z0-9_]+)')
if ($result -ne $null) {
    $matchedId = $result[0].Groups['Id'].Value
    $matchedName = $result[0].Groups['Name'].Value
}

以上です。