最小量指定子とは
最小量指定子とは読んだままの意味ですが、正規表現を用いて任意の文字列にマッチさせるときにヒットした最短の文字列にマッチするという意味です。
よくわからないので定義を説明した後、コードで説明していきたいと思います。
定義
*? | 直前の部分式が0回以上の繰り返し |
---|---|
+? | 直前の部分式が1回以上の繰り返し |
?? | 直前の部分式が0回か1回の繰り返し |
{n}? | 直前の部分式がn回の繰り返し |
{n,}? | 直前の部分式がn回以上の繰り返し |
{,m}? | 直前の部分式がm回以下の繰り返し |
{n,m}? | 直前の部分式がn回以上、m回以下の繰り返し |
以上になります。
定義の仕方については前回やった繰り返しのメタ文字列に対して?をつけるだけなので簡単ですね。
前回やった普通の繰り返しは最大量指定子と呼ばれ、最長の文字列にヒットしようとします。
それではその違いをコードを使って説明していきます。
var name = "yuichiyuichiyuichi"
name.match(/y.+i/) //yで始まり任意の文字列が1回以上繰り返しiで終わる。
=>"yuichiyuichiyuichi"
普通の繰り返しは最長の文字列にヒットするので最初のyで始まり一番最後のiまでがヒットし上記の返り値となります。
それでは最小量指定子を見ていきます。
var name = "yuichiyuichiyuichi"
name.match(/y.+?i/) //yで始まり任意の文字列が1回以上繰り返しiで終わる。
=>"yui"
上記の返り値となります。
繰り返しは同じですが?を加えることによりyからはじまり任意の文字列を1回以上繰り返し、iで終わる最短の文字列を検索しているので返り値はyuiとなります。
最後に
今回は最小量指定子について説明していきました。
文字列をマッチさせたいときはどの部分をマッチさせたいのか、不要な部分もマッチしてしまわないか、などを考えながらコードを書いていきましょう。
最後まで読んでいただきありがとうございました。