681 Stimmen

Was ist der Unterschied zwischen re.search und re.match?

Was ist der Unterschied zwischen dem search() y match() Funktionen im Python re Modul ?

Ich habe die Dokumentation ( aktuelle Dokumentation ), aber ich scheine mich nie daran zu erinnern. Ich muss es immer wieder nachschlagen und neu lernen. Ich hoffe, dass mir jemand eine klare Antwort mit Beispielen gibt, damit ich sie (vielleicht) im Gedächtnis behalte. Oder zumindest habe ich dann eine bessere Anlaufstelle für meine Frage und brauche weniger Zeit, um sie neu zu lernen.

40voto

CODE-REaD Punkte 2473

Der Unterschied ist, re.match() führt jeden in die Irre, der es gewohnt ist Perl , grep , oder sed Abgleich mit regulären Ausdrücken, und re.search() nicht. :-)

Etwas nüchterner, Wie John D. Cook bemerkt , re.match() "verhält sich so, als ob jedem Muster ein ^ vorangestellt ist". Mit anderen Worten, re.match('pattern') ist gleich re.search('^pattern') . Es verankert also die linke Seite eines Musters. Aber es ist auch verankert nicht die rechte Seite eines Musters: die noch eine abschließende $ .

In Anbetracht der obigen Ausführungen denke ich re.match() sollte veraltet sein. Mich würde interessieren, aus welchen Gründen sie beibehalten werden sollte.

5 Stimmen

"verhält sich so, als ob jedem Muster ein ^ vorangestellt wäre" ist nur wahr, wenn Sie die Option "Mehrzeilig" nicht verwenden. Die richtige Aussage ist "... hat \A vorangestellt"

23voto

U12-Forward Punkte 64772

Viel kürzer:

  • search durchsucht die gesamte Zeichenkette.

  • match scannt nur den Anfang der Zeichenkette.

Folgende Ex sagt es:

>>> a = "123abc"
>>> re.match("[a-z]+",a)
None
>>> re.search("[a-z]+",a)
abc

20voto

cschol Punkte 12385

Re.match versucht, ein Muster zu finden am Anfang der Zeichenkette . re.search versucht, das Muster zu finden in der gesamten Kette bis es eine Übereinstimmung findet.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X