Pythonで正規表現

相変わらず、ログの集計。
今回は、ログファイルより特定のキーワードが含まれる行を取得したい。
特定のキーワードは2種類。
ログファイルなので、お決まりのフォーマットで出力されている。
キーワードが2つなので、正規表現を利用してみる。

正規表現モジュール

Pythonで正規表現を利用するためにはreをインポートする。

import re

単純に部分一致する行を見つけたいのであれば以下の様で良い。

text = 'test X start'
if re.search('(X start|X end)', text) is not None:
    print(text)

ファイルの内容を行単位で繰り返し評価する場合は、正規表現オブジェクトをあらかじめ作成しておいた方が良いかも。

r = re.compile('(X start|X end)')
with open('log.log', 'r') as r:
    for line in r:
        if r.search(line) is not None:
            print(line.strip())

re.searchの戻り値を利用する

単純に存在するかどうかを判定するだけであれば、is not Noneで評価すればよいが、matchオブジェクトが返ってきているので、それを使うのも良い。

text = '----+----1----+----2----+----3'
m = re.search('1.*2', text)
print(m.group())
print(m.start())
print(m.end())
print(m.span())
# 1----+----2
# 9
# 20
# (9, 20)

m.start()やm.end()は、文字の切り出しに便利かもしれない。

まとめ

正規表現は書き方がわかるといろいろ便利。

同じタグの記事
同じカテゴリの記事

コメントを残す

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

CAPTCHA