Der Vorteil regulärer Regeln besteht darin, dass sie einfach anzuwenden sind. Nach ein paar Stunden Lernen können Sie die meisten regulären Regeln verstehen, aber im Verlauf des Übens werden Sie immer noch auf viele Dinge stoßen Wenn Sie Ergebnisse erzielen möchten, ist die Grammatik regulärer Ausdrücke immer noch etwas seltsam. In diesem Artikel wurden einige Fehler zusammengestellt, die beim Erlernen regulärer Ausdrücke auftreten.
Regulärer Ausdruck
1. Leerzeichen
Normalerweise schreiben wir manchmal Code Leerzeichen werden normalerweise als Werkzeug verwendet, um den Code standardisierter zu gestalten, zusammen mit entsprechenden Einzügen und Tabulatoren am Zeilenanfang, um den Code klarer aussehen zu lassen. Aber seien Sie vorsichtig bei regulären Ausdrücken – das Leerzeichen selbst ist auch ein Zeichen, das abgeglichen werden muss:
echo preg_match('/a{1, 3}/', "aaa") ? '匹配' : '不匹配'; // 不匹配
Der obige reguläre Ausdruck soll beispielsweise 1 bis 3 a abgleichen, aber tatsächlich stimmt nicht mit den folgenden drei a überein, da sich in der Mitte von {1, 3} ein zusätzliches Leerzeichen befindet, das die ursprüngliche Bedeutung des Metazeichens „{}“ ungültig macht und zu einem gewöhnlichen Zeichen wird:
echo preg_match('/a{1, 3}/', "a{1, 3}") ? '匹配' : '不匹配'; // 匹配
“ Stattdessen wird ein {1, 3}" abgeglichen, was offensichtlich nicht das ist, was wir wollen, daher müssen wir darauf achten, keine Leerzeichen zu verwenden, es sei denn, das Leerzeichen selbst wird abgeglichen:
echo preg_match('/a{1,3}/', "aaa") ? '匹配' : '不匹配'; // 匹配
※ Ausnahmen Der Mustermodifikator Es ist schwer zu verstehen und wird nicht empfohlen:
echo preg_match('/a a a/x', "aaa") ? '匹配' : '不匹配'; // 匹配
2. Großschreibung
Das ist im Grunde genommen ein Flüchtigkeitsfehler Normalerweise werden bei der Suche nach Buchstaben in Suchwerkzeugen Groß- und Kleinbuchstaben abgeglichen. Manchmal vergisst man, dass reguläre Ausdrücke nicht automatisch mit Groß- und Kleinbuchstaben übereinstimmen:
echo preg_match('/flag/', "Flag") ? '匹配' : '不匹配'; // 不匹配
Es kann vorkommen, dass der erste Buchstabe von Die auf diese Weise übereinstimmende Zeichenfolge wird selbstverständlich großgeschrieben. Zu diesem Zeitpunkt müssen wir sowohl die Groß- als auch die Kleinschreibung berücksichtigen. Aber manchmal möchten wir ein bestimmtes Wort zuordnen, solange diese vier Buchstaben übereinstimmen, ist es schwieriger zu schreiben:
echo preg_match('/[Ff][Ll][Aa][Gg]/', "Flag") ? '匹配' : '不匹配'; // 匹配
Obwohl es schwer vorstellbar ist, dass es so etwas Seltsames wie „fLaG“ gibt " Schreibmethode, aber wenn Sie es nicht so schreiben, können Sie nicht alle Situationen zuordnen, aber manchmal ist uns die Groß- und Kleinschreibung egal, aber die abzugleichende Zeichenfolge ist sehr lang. Ich fürchte, ich werde es tun Seien Sie erschöpft, wenn ich es so schreibe, aber zum Glück haben wir die „i“-Modifikation:
echo preg_match('/flag/i', "Flag") ? '匹配' : '不匹配'; // 匹配
Wenn der Modifikator „i“ gesetzt ist, wird die Groß-/Kleinschreibung im Muster nicht berücksichtigt.
3. Gieriger Modus
Die Quantifizierer „+“ und „*“ sind standardmäßig nicht auf die damit verbundenen Probleme gestoßen. Möglicherweise verstehen Sie sie nicht Was das bedeutet. Hier ist ein Beispiel von Kano:
preg_match_all('/<span>.*<\/span>/', "<span>aaa</span><span>bbb</span>", $matches); var_dump($matches);
Die ursprüngliche Absicht der Regelmäßigkeit besteht darin, alle Spannen in einem String-Tag zu finden und sie einzufügen in ein Array, aber das Ergebnis ist seltsam: Beide Spannen wurden gleichzeitig abgeglichen! Tatsächlich ist dies sinnvoll, wenn Sie darüber nachdenken. Die Zeichenfolge „aaabbb“ beginnt tatsächlich mit , aber das .* darin stimmt mit zu vielen Inhalten überein, „aaabbb“ wird alle gefunden. Dies ist der gierige Modus von „+“ und „*“ – standardmäßig stimmen sie mit so vielen Zeichen wie möglich überein, und das Hinzufügen eines „?“ am Ende kann diesen gierigen Modus aufheben, sodass sie nur mit so wenig Inhalt wie möglich übereinstimmen:
preg_match_all('/<span>.*?<\/span>/', "<span>aaa</span><span>bbb</span>", $matches); var_dump($matches);
Diesmal haben wir das gewünschte Ergebnis erzielt.
Die reguläre Syntax ist etwas ganz Besonderes und es kann leicht zu Problemen kommen, wenn man nicht aufpasst.
Empfohlene Studie: „Schnelle Einführung in reguläre Ausdrücke“
Das obige ist der detaillierte Inhalt vonHäufige Fehler für Anfänger beim Erlernen regulärer Ausdrücke. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!