とても基本的なことなのだが、ちょっとはまってしまったのでメモ。
Powershellの正規表現で桁数固定の文字列にマッチさせたいとき、ちゃんと数値の前後の文字列もパターンに含めないと意図しない文字列にもマッチしてしまう
例えば、「test.NNN」(Nは0-9の数字)というパターンにマッチさせたいとき、
PS D:\> #これでいいかなーと思いきや PS D:\> "test.005" -match "test.\d{3}" True PS D:\> #これもマッチしてしまう PS D:\> "test.0005" -match "test.\d{3}" True PS D:\> "test.005.txt" -match "test.\d{3}" True
防止するためには桁数指定をするときには必ず前後の文字列もパターンに加えるようにする
PS D:\> #不要なものをマッチさせないためには終端を示すメタキャラクタ($)を追加する PS D:\> "test.0005" -match "test.\d{3}$" False PS D:\> "test.005.txt" -match "test.\d{3}$" False PS D:\> "test.005" -match "test.\d{3}$" True
しょうもないんだけど小一時間ぐらい悩んでしまった。 ちゃんと睡眠をとった上で作業しよう。