re.match und re.search

re.match-Funktion

Syntax:

re.match(pattern, string, flags=0)

re.match versucht, ein Muster von der Startposition der Zeichenfolge abzugleichen, wenn es nicht die Startposition ist Wenn ja, gibt match() keine zurück.

re.search-Funktion

Syntax:

re.search(pattern, string, flags=0)

re.search Scannt die gesamte Zeichenfolge und gibt den ersten erfolgreichen Treffer zurück.

Die Parameter von re.match und re.search sind grundsätzlich gleich. Die spezifischen Beschreibungen lauten wie folgt:

参数 描述
pattern 匹配的正则表达式
string要匹配的字符串
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写

Was ist also der Unterschied zwischen ihnen?

re.match stimmt nur mit dem Anfang der Zeichenfolge überein, schlägt der Abgleich fehl und die Funktion gibt None zurück, während re.search die gesamte Zeichenfolge abgleicht, bis eine Übereinstimmung vorliegt gefunden wird. Das ist der Unterschied zwischen ihnen.

re.match und re.search haben viele detaillierte Einführungen im Internet, aber im persönlichen Gebrauch verwende ich immer noch gerne re.findall

Schauen Sie sich zum Vergleich die folgenden Beispiele an. Der Unterschied Zwischen re.search und re.findall gibt es auch die Verwendung von Mehrfachgruppierungen. Schauen Sie sich insbesondere die Kommentare an und vergleichen Sie die Ausgabeergebnisse:

Beispiel:

#!/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())

Ausgabeergebnisse:

<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')

Schließlich sind reguläre Ausdrücke sehr leistungsfähige Werkzeuge und können normalerweise verwendet werden Wird zur Lösung von Problemen verwendet, die nicht durch die integrierten Funktionen von Zeichenfolgen gelöst werden können. Reguläre Ausdrücke sind in den meisten Sprachen verfügbar. Python hat viele Verwendungsmöglichkeiten, aber reguläre Ausdrücke sind sowohl im Crawler- als auch im Datenanalysemodul unverzichtbar. Daher sind reguläre Ausdrücke für das Erlernen von Python wirklich wichtig. Schließlich enthält es einige gängige reguläre Ausdrücke und Metazeichen für reguläre Ausdrücke sowie Syntaxdokumente, die von Python unterstützt werden.

Weiter lernen
||
einreichenCode zurücksetzen