FC2ブログ

サラリーマンのすらすらIT日記

IT関連を中心とした日々を綴ります。
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())
5Traceback (most recent call last):
6  File "<stdin>", line 1, in <module>
7AttributeError: '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...
09not match
10>>>


スポンサーサイト



コメント

コメントの投稿

  • URL
  • コメント
  • パスワード
  • 秘密
  • 管理者にだけ表示を許可する

トラックバック

トラックバックURL:http://sookibizviz.blog81.fc2.com/tb.php/1737-2cb53a1d

■  カレンダー

02 | 2020/03 | 04
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

■  プロフィール

sookibizviz

Author:sookibizviz
仕事の内容やソフトの紹介を交えながら、日々の悪戦苦闘を綴っていきます。

■  最新記事

■  最新コメント

■  最新トラックバック

■  月別アーカイブ

■  カテゴリ

未分類 (64)
BizViz (24)
IT (1119)
計量 (76)
環境 (26)
数学 (181)
ニュース (46)
本 (187)
音楽 (113)
囲碁 (5)
将棋 (26)
ブログ (14)
日記 (19)

■  FC2カウンター

FC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンターFC2無料カウンター

■  検索フォーム

■  RSSリンクの表示

■  QRコード

QRコード