$ perl -E ' > $rx = qr{(?x) > ( > foo\d+(?{say q{matched foo\d+}}) > | > bar\S+?(?{say qq{matched bar\S+?}}) > ) > }; > q{abcfoo44fred} =~ $rx && say qq{captured $1}; > q{barbell} =~ $rx && say qq{captured $1}; > q{xyz} =~ $rx && say qq{captured $1};' matched foo\d+ captured foo44 matched bar\S+? captured barb $