【Python3】正規表現でデータ抽出

日頃、ちょっとした処理はPythonで書いているのだが、そのなかでもとりわけ正規表現は頻繁に使いつつも、書き方を結構な頻度で忘れてしまうのでちゃんとメモっとく。なんか、配列の宣言の仕方とかもそうだけど、いろいろな言語を横断してるとパッと書けなくなってきちゃのよね。

とはいっても、なんか具体的なお題が無いと書けないので、テキトーなスクリプトをサンプルで組んでみたゾ。今の現場だと、組み込み向けのCソースコードを加工することが多いので、そいつを読み込む感じのアレを作ってみよう。


こいつが何やってるかってぇと、

#define foo -1 // bar

C言語のヘッダファイルにあるコメント付きdefineマクロを拾ってきて

foo => -1 // bar

こんな感じで出力する、ただそれだけのスクリプト。これだけだと意味無さそうだけど、実際の仕事ではこいつを応用して、Jenkinsでフラグを一つ一つ切り替えながらビルドして、途中でこけないかとかのチェックに使ってたりしてる。長年受け継がれてきた秘伝のタレみたいなソースコードには、割とそういう謎フラグ多いからね。

まず正規表現使うには、「re」ってやつをimportしておく。で、文字列全体から検索するには、re.search() を使えばOKな。re.match()とかいうややこしいのも居るが、そいつの場合は文字列の先頭からしか引っ掛けてくれないので注意。ちなみに、俺はロクにドキュメント見ずにコーディングしちゃう意識低い系男子なので、小一時間ハマってしまった。

んで、正規表現のパターン内で (?P<名前>パターン) で括ってやった所が、re.search() で返ってきたmatchオブジェクトの group() に格納されているので、そいつの引数に名前を指定してやれば取得できる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)