Heim  >  Artikel  >  Backend-Entwicklung  >  Analysieren des kürzesten Übereinstimmungsmusters in regulären Ausdrücken

Analysieren des kürzesten Übereinstimmungsmusters in regulären Ausdrücken

巴扎黑
巴扎黑Original
2017-09-21 11:52:101769Durchsuche

Der kürzeste Abgleich sollte verwendet werden: Wenn ein Textstück vorhanden ist, möchten Sie nur den kürzesten und nicht den längsten Abgleich abgleichen. Der folgende Artikel führt Sie hauptsächlich in die relevanten Informationen zur Verwendung des kürzesten Matching-Musters in regulären Ausdrücken ein. Die Einführung im Artikel ist sehr detailliert.

Vorwort

Vor kurzem wollte ich reguläre Ausdrücke verwenden, um etwas von einer Webseite abzurufen. Der Inhalt war nicht kompliziert, aber es traten viele Probleme auf. . Im Folgenden gibt es nicht viel zu sagen. Werfen wir einen Blick auf die ausführliche Einführung:

Wenn wir reguläre Ausdrücke verwenden, um den Anfang und das Ende eines Tags abzugleichen, z. B. um die öffnenden und schließenden Tags von h1 in 4a249f0d628e2318394fd9b75b4636b1hello world473f0a7621bec819994bb5020d29372a abzugleichen

Viele Leute schreiben vielleicht so


/<.*h1>/g

Aber ist das wirklich in Ordnung?

Da das *-Übereinstimmungszeichen mit null oder mehr des vorherigen Zeichens übereinstimmt und es sich um eine gierige Übereinstimmung handelt

, erhalten Sie das folgende Ergebnis.


Offensichtlich ist das nicht das, was wir wollen, also wie man Greedy Matching in Minimum Matching umwandelt,


/<.*?h1>/g

Die obige Schreibmethode reicht aus, wie unten gezeigt:


Tatsächlich sollte das Prinzip sehr einfach sein, denn ? ist auch ein gieriges Match , und kann nur 0 bis 1 abgleichen,

, sodass es endet, wenn es mit dem ersten übereinstimmt, wodurch verhindert wird, dass * gierig darauf ist, mehrere abzugleichen.

Das obige ist der detaillierte Inhalt vonAnalysieren des kürzesten Übereinstimmungsmusters in regulären Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn