[PS1] Powershell で正規表現 (複数のMatch)

2014年12月28日

 複数の箇所に match する場合、-match 演算子では最初の match しか $Matches に登録されません。

PS > "AB12-AB345" -match "AB[0-9]+"
True
PS > $Matches

Name                           Value
----                           -----
0                              AB12

 複数マッチの場合は regex を素直に使うようにします。

PS > $a = [RegEx]::Matches("AB12-AB345", "AB[0-9]+")
PS > $a | % {$_.Value}
AB12
AB345

 また、match 部分に名前を付けた場合は、.Groups プロパティ経由でアクセスします。

PS > $a = [RegEx]::Matches("AB12-AB345", "AB(?<name>[0-9]+)")
PS > $a | % {$_.Groups["name"].Value}
12
345





カテゴリー: OS, PowerShell, Windows

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org