2015年12月19日

最強に見える

調べれば調べるほど正規表現でできることの多さに驚かされる。しかし自分が書いたパターンでさえ三分後に見直すと解読が困難で、ここまで正規表現でやる意味はあるんだろうかという気もしてくる。

ともあれ、これまで2種類のパターンを作って両方でマッチを試み、マッチした方を採用するというフローだったが、assertion を使うことで正規表現パターンを1種類に纏めることができそうだ。これで Python 部分はかなりすっきりする。

(?P<name> expression)? の後で (?(name)|(?P<name>expression)) として、二箇所のうちどちらかマッチした方が name というグループになるという挙動を期待したが、単に二重定義で怒られた。まあ駄目でもともとというつもりだったけれど、これだけは Python の方で処理することになりそうだ。

マッチしなかった方は None になるので、max() で比較するとマッチした方が返ってくる。簡潔だけれど、abuse だろうか。

とりあえずもう寝よう。

0 件のコメント:

コメントを投稿