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.