正規表現使用時のグルーピングで括弧()でかこった部分は、同時にメモリに保存され、
後で利用することができる。
if (/PAT1(PAT2)PAT3/) {
$exp = $1
}
逆に、これらのメモリ変数が不要な場合は、メモリ格納がオーバーヘッドになるので、
(?:PATTERN)
とすることで、メモリ変数を使用せずにグルーピングが可能になる。
パターン内にメモリ変数を使用したい場合は、$1, $2 .. でなく、\1, \2 .. で、
メモリ内の変数を参照することができる。
$string =~ /(PATTERN1)PATTERN2\1/;
→ PATTERN1PATTERN2PATTERN1 という場合にマッチ