Pythonで正規表現のマッチングをするのに、matchやsearchを使います。matchとsearchの違いは、matchが対象文字列の先頭から検索するのに対し、searchは任意の位置から検索します。matchやsearchはマッチしなかった時に何を返すか?解説書(私はここを見ました)などをよく見ると書いてあるのですが、他の言語からの連想で誤解していました。 いくつかの言語では、文字列のマッチングでマッチしなかった時に0や-1を返すことが多い。先頭位置を0とする言語ではを-1を返し、先頭位置を1とする言語では0を返すといった具合です。ところがPythonではNoneを返しますから、このようなコードではエラーが出ます。 >>> import re >>> p = re.compile("abc") >>> m = p.search("def123") >>> print(m.group