/^(?:([AE][0-9]{7})|(IN:\g<1>Q))$/
という正規表現に対しては
"J0125556" "IN:E0123463Q"
という文字列がマッチします。
「(?:pat)」というグループ化しない記法で囲んでおくとキャプチャが作成されず一寸だけ性能が増します。
/^(?:([AE][0-9]{7})|(IN:\g<1>Q))$/.match("E0123463") #=> #<MatchData "E0123463" 1:"E0123463" 2:nil> /^(?:([AE][0-9]{7})|(IN:\g<1>Q))$/.match("IN:E0123463Q") #=> #<MatchData "IN:E0123463Q" 1:"E0123463" 2:"IN:E0123463Q">
ちなみに、ないとこんな感じになります。
/^(([AE][0-9]{7})|(IN:\g<1>Q))$/.match("IN:E0123463Q") #=> #<MatchData "IN:E0123463Q" 1:"IN:E0123463Q" 2:"E0123463" 3:"IN:E0123463Q"> /^(([AE][0-9]{7})|(IN:\g<1>Q))$/.match("E0123463") #=> #<MatchData "E0123463" 1:"E0123463" 2:"E0123463" 3:nil>
このように、キャプチャするものが一個へるので性能面でも・・・というわけです
応用例:特定のパターンが連続して出る場合のグループ化
"ビーックビックビックビックカメラ" =~ /^ビーッ(?:クビッ){3}クカメラ$/ #>>0
Regexp.last_match #>> #<MatchData "ビーックビックビックビックカメラ"> Regexp.last_match(1) #>> nil Regexp.last_match(0) #>> "ビーックビックビックビックカメラ"
参考もと
/^ビーッ(?:クビッ){3}クカメラ$/
— akrfjmt (@fourxz) 2015, 7月 31