「JavaScript:The Good Parts」という本では、方法string.match(regexp)
を次のように説明しています。
matchメソッドは、文字列と正規表現を照合します。これをどのように行うかは、gフラグによって異なります。gフラグがない場合、string .match(regexp)を呼び出した結果は、regexp .exec(string)を呼び出した結果と同じになります。ただし、正規表現にgフラグがある場合は、すべての一致の配列が生成されますが、キャプチャグループは除外されます。
次に、本はコード例を提供します:
var text = '<html><body bgcolor=linen><p>This is <b>bold<\/b>!<\/p><\/body><\/html>';
var tags = /[^<>]+|<(\/?)([A-Za-z]+)([^<>]*)>/g;
var a, i;
a = text.match(tags);
for (i = 0; i < a.length; i += 1) {
document.writeln(('// [' + i + '] ' + a[i]).entityify());
}
// The result is
// [0] <html>
// [1] <body bgcolor=linen>
// [2] <p>
// [3] This is
// [4] <b>
// [5] bold
// [6] </b>
// [7] !
// [8] </p>
// [9] </body>
// [10] </html>
私の質問は、「キャプチャグループを除外する」ことは理解できないということです。
上記のコード例ではhtml
、</html>
はキャプチャグループにあります。そして、なぜそれがまだ結果配列に含まれているのですか?
そして/
、で</html>
キャプチャグループにもあります。そして、なぜそれが結果配列に含まれるのですか?
上記のコード例で「キャプチャグループを除外する」と説明できますか?
どうもありがとうございます!