なぜですか "abcabcabc".match(/(abc){3}/);
キャプチャグループRegex Javascript matchはなぜ2つの値を返しますか?
返品2件["abcabcabc", "abc"]
?両方とも「ABCABCABC」と「ABC」
は、同様に、
["1234", "1234"]
なぜですか "abcabcabc".match(/(abc){3}/);
キャプチャグループRegex Javascript matchはなぜ2つの値を返しますか?
返品2件["abcabcabc", "abc"]
?両方とも「ABCABCABC」と「ABC」
は、同様に、
["1234", "1234"]
すべての正規表現が結果に格納され、その周りに暗黙のキャプチャグループ、0
を有する第2の結果は、あなたから来ていますキャプチャグループ(abc)
。ほとんどのregexp実装では、そのキャプチャグループの最後の一致しか保持しません。
第一キャプチャグループ
(abc){3}
{3}
数量子は、 - Aが唯一の最後の繰り返しをキャプチャするグループをキャプチャ繰り返し3回正確に一致します。繰り返しグループの周りにキャプチャグループを置き、すべての反復をキャプチャするか、データに興味がない場合はキャプチャしないグループを使用します。
abc
は文字通り(大文字と小文字を区別)
だから最初の値、すなわち"abcabcabc"
、全体のマッチであるabc
文字にマッチします。
第2の値は、(abc)
でキャプチャされた最後の反復です。つまり、です。
正規表現全体が一致するものは_first_値なので、次のすべてがマッチグループに一致します – vlaz
TC39委員会がこれを行うことにした理由を尋ねていますか(答えられません)、またはこれらの値の意味([MDNドキュメント](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match#Return_value)で説明されています)? –
'(abc){3}'は最後の1番目のキャプチャグループに1つの 'abc'シーケンスを保持します。 – revo