正規表現を使うときは,正規表現のエラーチェックをきちんと実装しておいたほうが安全です
例外を使って実装すると次のようになります
import re pattern = "^c++" prog = None try: prog = re.compile(pattern) except re.error as msg: print("error in regex /%s/; %s" % (pattern, str(msg)))
行頭の c++ にマッチさせたいので正規表現として ^c++ と書いてありますが,これは正しくありません.
上記サンプルコードを実行すると,例外が発生して,エラーメッセージが表示されます.
error in regex /^c++/: multiple repeat at position 3
"multiple repeat"とあるように ++ が連続しているのは正規表現として正しくありません
上記の例だと c++ にマッチさせたいので ^c\+\+ と訂正する必要があります