なんか楽しそうなお話なので、参加せてください。

 「|」は遅い。

これ常識ですよ。何も、>>118>>121 みたいな小難しいコードを書かなくても
ストップウォッチで計れば十分。否、腹時計でも十分っすよ。
あまりにも速度の差が歴然としすぎていて、今まで時計で計った事なかったなぁ・・・

遅い根拠は、regexp のソースコード読めば分かります。
もっと言えば、自分で regexp もどきでも作ってみればわかります。

まず簡単な例・・・C言語には strstr() って関数がありますよね?
文字列Aの中から、文字列Bが含まれる位置を返す。正規表現なしの単純な機能です。
これと同じものを自分で書いてみてください。簡単に書けると思います。初歩の初歩です。

では、これを拡張して、正規表現の | が使えるようにしてみてください。
(正規表現には、他にも*とかありますが、今回はとりあえずは | だけでいいです)

コードを書いてるうちに気づくはずです。「こんなメンドクサイ事するより、strstr() && strstr() でいいじゃん! 」
そうです。絶対そのほうが安くて早くてウマイんです。

ではなぜ、正規表現に | があるのか?それはですね、「1行で書きたいから」
コマンドラインから sed とか grep とか、あるいは perl のワンライナー使うときは、どうしても1行で書く必要があります。
でも、perl のスクリプトは2行でも3行でも分けて書くこともできるわけですから、| を使うメリットはあまり有りませんね。

人間止めますか、それとも|使いますか?