*?・+?・??・{n,m}? 繰り返しマッチングでのものぐさ指定(Ver1.90対応版)
目次Index -
正規表現Regular expression
「*」、「+」、「?」、「{n,m}」のような繰り返し指定は、原則として、もっとも長い文字列にマッチさせるように動作します。例えば「a*」の指定が"a"の文字が連続している文字列にヒットするとき、"a"の全体にヒットします。
ものぐさ指定をした場合は、逆に、もっとも短い文字列にヒットしようとします。例えば「a*?」だけ指定すると、それは0文字にヒットします。
例えば、「<」で始まって「>」で終わる文字列にヒットさせるために、「<.*>」と正規表現指定すると、それはそれで正しくヒットしますが、それだと「<AAA>CCC<BBB>」のような文字列の全体にヒットしてしまって都合が悪いです。そういう時に、ものぐさ指定して、例えば「<.*?>」のように指定すると、<AAA>の部分と<BBB>の部分の2つに分けてヒットして、とても便利です。
また、正規表現のマッチング処理自体も、ものぐさ指定した方が動作速度が速くなる可能性が高いです。