再マッチングと再検索
re.match 関数
構文:
re.match(pattern, string, flags=0)
re.match は、文字列の開始位置でない場合、文字列の開始位置からパターンを照合しようとします。位置が一致している場合、一致は成功します。成功した場合、match() は何も返しません。
re.search 関数
構文:
re.search(pattern, string, flags=0)
re.search 文字列全体をスキャンし、最初に一致したものを返します。
re.match と re.search のパラメータは基本的に同じであり、具体的には次のとおりです。説明
一致する正規表現 | |
一致する文字列 | |
正規表現の一致方法を制御するために使用されるフラグ (大文字と小文字を区別するかどうかなど) | |
#それから彼らは何が違うのですか? | re.match は文字列の先頭のみに一致します。文字列の先頭が正規表現に一致しない場合、一致は失敗し、関数は None を返します。一方、re.search は一致するまで文字列全体を一致させます。見つかった。これがそれらの違いです。 |
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- # 提取图片的地址 import re a = '<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg">' # 使用 re.search search = re.search('<img src="(.*)">', a) # group(0) 是一个完整的分组 print(search.group(0)) print(search.group(1)) # 使用 re.findall findall = re.findall('<img src="(.*)">', a) print(findall) # 多个分组的使用(比如我们需要提取 img 字段和图片地址字段) re_search = re.search('<(.*) src="(.*)">', a) # 打印 img print(re_search.group(1)) # 打印图片地址 print(re_search.group(2)) # 打印 img 和图片地址,以元祖的形式 print(re_search.group(1, 2)) # 或者使用 groups print(re_search.groups())出力結果:
<img src="https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg"> https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg ['https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg'] img https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg ('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg') ('img', 'https://s-media-cache-ak0.pinimg.com/originals/a8/c4/9e/a8c49ef606e0e1f3ee39a7b219b5c05e.jpg')最後に、正規表現は非常に強力なツールであり、通常は使用されます。文字列の組み込み関数では解決できない問題を解決するために使用され、正規表現はほとんどの言語で使用できます。 Python にはさまざまな用途がありますが、正規表現はクローラ モジュールとデータ分析モジュールの両方で不可欠です。したがって、正規表現は Python を学習する上で非常に重要です。最後に、Python でサポートされるいくつかの一般的な正規表現、正規表現メタキャラクター、および構文ドキュメントが付属しています。