その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

perl6 の正規表現の or (|) は longest match

perl5 での正規表現の or は | のみでした.以下のように使うことができます.

'aaabbb' =~ /(a|a+b)/

これは a にマッチします.左に書いてあるマッチャが優先されますね.


同様に | を用いて perl6 で書いてみましょう.

'aaabbb' ~~ /(a|a+b)/

おおっと,これは aaab にマッチしてしまいます.
何故かと言うと perl6 の | は longest match だからなんですね.すごいぞ,これは便利!!!!

しかし上の perl5 の例と同じような挙動をさせたい場合もあるでしょう.まあ大体はそうですね.
そういう時は | の代わりに || を使うとよろしい.

'aaabbb' ~~ /(a||a+b)/

こうすると a にマッチします.やりましたね.