今回は簡単にですが、Pythonの正規表現についてです。プログラマーなら、仕事で一度は出会うことになる正規表現ですが、実行速度を計測したことがなかったので、それを記載しておきます。
正規表現とは?
正規表現とは、ある文字列のパターンを式で定義して、マッチするかどうかを調べるパターンマッチングのことです。
Pythonの正規表現
Pythonの正規表現では、主にmatchとcompileの2つの方法で記載できます。※もっとあるが、ここでは触れない。
import re
re_str = r"test"
target = "test"
# match
match = re.match(re_str, target)
if match:
print("Matched")
else:
print("Not matched")
# compile
prog = re.compile(re_str)
match = prog.match(target)
if match:
print("Matched")
else:
print("Not matched")
re_str
: 正規表現の文字列target
: 正規表現にマッチしているのか調べる対象
この例では、単に”test”という文字列が含まれていれば、マッチします。
※正規表現の記載方法は、このqiitaの記事にわかりやすくまとめられてました。
https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3
実行速度
以下、matchとcompileの実行速度です。いままで計測したことがなかったのですが、気になったので計測してみました。
import re, time
# match
start = time.time()
for test in range(0,10000):
re.match(r"test","test")
end = time.time()
result = (end - start)
print( "match time: %s sec" % result)
# compile
start = time.time()
prog = re.compile(r"test")
for test in range(0,10000):
prog.match("test")
end = time.time()
result = (end - start)
print( "compile time: %s sec" % result)
結果:
match time: 0.03054213523864746 sec
compile time: 0.0130767822265625 sec
やはりcompileしたほうが速いですね。繰り返し同じパターンをチェックするときには、compileしたものを使用したほうがよいです。