2015年12月14日

regex, regegis

Python でユーザーの入力をパースする方法を考えていたが、split() など使ってみても今一つ柔軟性が出ない。

調べてみると、re という正規表現モジュールが標準の環境についている。あまり直感的でないモジュール名だが、今はなくなった regex という古いモジュールと併存していた時期があるらしく、その名残りだろう。

compile() でマッチパターンをコンパイルすると _sre.SRE_Pattern オブジェクトが返され、このオブジェクトの match() メソッドなどに検索対象の文字列を引数として渡すと、結果がこれも_sre.SRE_Match オブジェクトで帰ってくるという仕様に一瞬面喰らったが、実際に動かしてみると成る程これはこれで良いのだろうと思う。

メソッド名(正規表現, 対象文字列) という様な形式が使いたければ、そういう関数を自作することは容易だろう。

ともあれ、多少大仰になる様な気はするが、やはり正規表現は強力で、導入した瞬間に初期の課題は半分まで解決してしまった。

想定される様々なケースを過不足なく捕捉できる正規表現を試行錯誤で組み上げていくのは、パズルのようで中々楽しい。

あまり使いこなせてはいない。

0 件のコメント:

コメントを投稿