再マッチングと再検索LOGIN

再マッチングと再検索

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 のパラメータは基本的に同じであり、具体的には次のとおりです。説明

パターン 一致する正規表現string一致する文字列flags 正規表現の一致方法を制御するために使用されるフラグ (大文字と小文字を区別するかどうかなど) re.match と re.search については、インターネット上に詳細な紹介がたくさんありますが、個人的に使用する場合は、やはり re.findall を使用するのが好きです。
#それから彼らは何が違うのですか? re.match は文字列の先頭のみに一致します。文字列の先頭が正規表現に一致しない場合、一致は失敗し、関数は None を返します。一方、re.search は一致するまで文字列全体を一致させます。見つかった。これがそれらの違いです。
次の例を比較してください。 re.search と re.findall の間でもマルチグループ化が使用されます。具体的にコメントを見て、出力結果を比較します。

例:

#!/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 でサポートされるいくつかの一般的な正規表現、正規表現メタキャラクター、および構文ドキュメントが付属しています。

次のセクション

コースウェア