anatsuk1のウェブログ

ブログを書いてみたい!

字句解析

re.Scannerクラス

re.Scannerクラスを使用して正規表現で字句解析ができる。

urlの簡単な解析

実際にはurlparseを使用すれば良いが、Scannerを使用して簡単な例をあげると

#!/usr/bin/python
# -*- coding: utf-8 -*-

import re

def action(scanner, word):
return word

target = "http://www.sample:80/%7Eguido/Python.html"

scanner = re.Scanner([
(r"\w+:", action),
(r"//.+/", action),
(r".+", action),
])
print scanner.scan(target)

結果

(['http:', '//www.sample:80/%7Eguido/', 'Python.html'], '')


Scannerでのコンストラクタに渡した正規表現と一致する場合は、対にした関数が呼び出される。 関数で返却した文字列がscanの1番目のリストに格納される。 Scannerでのコンストラクタに渡した正規表現と一致しない場合は、scanの2番目文字列に格納される。

参考:Python sre.Scannerクラス - SumiTomohikoの日記