亀の甲羅2

今日もまた朝とく起きて励まなん窓に明るきありあけの月

powershell 正規表現 最小マッチ(「.*」 を使ったときに)

.* を使うと任意の文字を0回以上繰り返す。置換などで正規表現を使う場合、思わぬところまでマッチしてしまうことがある。
最大マッチ、最小マッチの概念がある。

$str = "aaa-bbb-ccc.jpg"

$str -replace "^.*-", "hoge-"  # hoge-ccc.jpg(普通に.*を使うと最大マッチ:aaa-bbb-の部分にマッチ)
$str -replace "^.*?-", "hoge-"  # hoge-bbb-ccc.jpg(.*?を使うと最小マッチ:aaa-の部分にマッチ)

こんな感じで、最大マッチ、最小マッチで結果が異なる。