2013/11/07
Python−matchやsearchでマッチしなかった時
Pythonで正規表現のマッチングをするのに、matchやsearchを使います。matchとsearchの違いは、matchが対象文字列の先頭から検索するのに対し、searchは任意の位置から検索します。matchやsearchはマッチしなかった時に何を返すか?解説書(私はここを見ました)などをよく見ると書いてあるのですが、他の言語からの連想で誤解していました。
いくつかの言語では、文字列のマッチングでマッチしなかった時に0や-1を返すことが多い。先頭位置を0とする言語ではを-1を返し、先頭位置を1とする言語では0を返すといった具合です。ところがPythonではNoneを返しますから、このようなコードではエラーが出ます。
このように書くとエラーになりません。
1 | >>> import re |
2 | >>> p = re.compile( "abc" ) |
3 | >>> m = p.search( "def123" ) |
4 | >>> print(m.group()) |
5 | Traceback (most recent call last): |
6 | File "<stdin>" , line 1, in <module> |
7 | AttributeError: 'NoneType' object has no attribute 'group' |
8 | >>> |
9 | </module></stdin> |
このように書くとエラーになりません。
01 | >>> import re |
02 | >>> p = re.compile( "abc" ) |
03 | >>> m = p.search( "def123" ) |
04 | >>> if m != None: |
05 | ... print(m.group()) |
06 | ... else : |
07 | ... print( "not match" ) |
08 | ... |
09 | not match |
10 | >>> |
スポンサーサイト
コメント
コメントの投稿
トラックバック
トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1737-2cb53a1d