Jul
19
Geneseo Middle School
Jul
19
Ab Perl 5.28 ist es jetzt einfach, Zeichenfolgen zu erkennen, die keine Skriptläufe sind. Schließen Sie einfach so gut wie jedes muster wie dieses ein: Schließlich denken Sie daran, dass Submuster, die innerhalb eines DEFINE-Blocks erstellt wurden, auf die absolute und relative Anzahl der Erfassungen angerechnet werden, also folgendes: Wenn das Muster sein Trennzeichen darin enthält, muss dieses Trennzeichen entweichen. Die Präfixierung mit einem umgekehrten Schrägstrich (z. B. “/foo”/bar/” ) dient diesem Zweck. Dieses Muster entspricht nichts und schlägt immer fehl. Es kann verwendet werden, um den Motor zu zwingen, zurückzuverfolgen. Es ist äquivalent zu (?!) , aber leichter zu lesen. Tatsächlich wird (?!) intern in (*FAIL) optimiert. Sie können ein Argument angeben, damit das Argument aus $REGERROR abgerufen werden kann, wenn die Übereinstimmung aufgrund dieser FAIL-Direktive fehlschlägt. Der Name des Musters (*SKIP:NAME) hat eine besondere Bedeutung. Wenn beim Abgleichen ein (*MARK:NAME) gefunden wurde, dann ist es diese Position, die als “Skip Point” verwendet wird. Wenn kein (*MARK) dieses Namens gefunden wurde, hat der Operator (*SKIP) keine Auswirkungen.
Bei Verwendung ohne Namen ist der “Skip-Point” der Punkt, an dem sich der Übereinstimmungspunkt bei der Ausführung des Musters (*SKIP) befand. HINWEIS: Um die Dinge für Programmierer mit Erfahrung mit den Python- oder PCRE-Regex-Engines einfacher zu machen, ist das Muster (? PPattern) darf anstelle von (? Muster); Dieses Formular unterstützt jedoch nicht die Verwendung von anführungszeichen als Trennzeichen für den Namen. Berücksichtigen Sie die Übereinstimmung mit Mustern, bei der keine Groß-/Kleinschreibung berücksichtigt wird. Beispielsweise entspricht “A” mit “a” unter /i . Unicode-Escape-Sequenzen wie z. B. im Java-Quellcode werden wie in Abschnitt 3.3 der Java™ Language Specification beschrieben verarbeitet. Solche Escape-Sequenzen werden auch direkt vom Regulären Ausdrucksparser implementiert, sodass Unicode-Escapes in Ausdrücken verwendet werden können, die aus Dateien oder von der Tastatur gelesen werden. So kompilieren die Zeichenfolgen “-u2014” und “-u2014”, obwohl nicht gleich, in das gleiche Muster, das dem Zeichen mit dem hexadezimalen Wert 0x2014 entspricht. Das Gruppierungskonstrukt ( … ) erstellt Erfassungsgruppen (auch als Erfassungspuffer bezeichnet).
Um später auf den aktuellen Inhalt einer Gruppe zu verweisen, verwenden Sie innerhalb desselben Musters die Verwendung von sg1 (oder g{1} ) für die erste, die zweite , die g2 (oder die {2} ) usw. Dies wird als Rückverweis bezeichnet. Die Anzahl der erfassten Teilzeichenfolgen, die Sie verwenden dürfen, ist unbegrenzt. Gruppen werden nummeriert, wobei die linke offene Klammer die Nummer 1 usw. ist. Wenn eine Gruppe nicht übereinstimmt, stimmt auch der zugehörige Rückverweis nicht überein. (Dies kann passieren, wenn die Gruppe optional ist, oder in einem anderen Zweig einer Änderung.) Sie können das “g” weglassen und “-1” usw. schreiben, aber es gibt einige Probleme mit diesem Formular, wie unten beschrieben.
Wenn Sie ein literales reguläres Ausdruck schreiben und einem Schrägstrich (“/”) entsprechen müssen, müssen Sie dies umgehen (andernfalls wird das Muster beendet). Um beispielsweise nach der Zeichenfolge “/example/” gefolgt von einem oder mehreren alphabetischen Zeichen zu suchen, verwenden Sie die umgekehrten Schrägstriche, bevor sie von jedem Schrägstrich literal gemacht werden. Erinnern Sie sich daran, dass das, welches von ja-Muster oder No-Muster tatsächlich entspricht, bereits bestimmt ist. Die Reihenfolge der Übereinstimmungen ist die gleiche wie für den gewählten Unterausdruck. Zurück: Schreiben Sie ein Python-Programm, um das Alphabetmuster `E` zu drucken. Nächstes Thema: Schreiben Sie ein Python-Programm, um das Alphabetmuster `L` zu drucken.