マッチしなかったら.*のマッチするところを一つ短くして
またマッチするかをテストしているので問題ないです

正規表現をオートマトンにしてそのグラフを探索することに対応しています