cjx arbeitet derzeit an einem Crawler-Projekt und muss dringend den gewünschten Inhalt von der Seite erfassen, aber es ist zu kompliziert, ihn durch logisches Urteilsvermögen zu erhalten. Ich habe das große Glück, über das leistungsstarke Tool für reguläre Ausdrücke zu verfügen. Cjx hatte zuvor auch einige Kenntnisse über reguläre Ausdrücke. Allerdings war ich in einem Zustand unvollständigen Verständnisses und es ist schwierig, selbst effektiv einen zufriedenstellenden regulären Ausdruck zu schreiben. Kürzlich habe ich im Internet ein Buch mit dem Titel „Mastering Regular Expressions“ von Jeffrey E.F. Fried gefunden. Nachdem ich das erste Kapitel gelesen hatte, stellte ich plötzlich fest, dass ich ein paar reguläre Regeln schreiben konnte, haha~~~ cjx fühlte sich plötzlich, als wäre er von einem Verlierer zu einem großen, reichen und gutaussehenden Mann aufgestiegen ... Das Folgende ist eine Zusammenfassung davon erstes Kapitel des Buches ~
Zeilenanfang und -ende
Die vielleicht am einfachsten zu verstehenden Metazeichen sind das Caretzeichen ^ und das Dollarzeichen $. Bei der Überprüfung einer Textzeile stellt ^ den Anfang dar einer Linie und $ stellt das Ende dar.
Leser entwickeln am besten die Gewohnheit, reguläre Ausdrücke entsprechend den Zeichen zu verstehen. Zum Beispiel:
^cat entspricht einer Zeile, die mit cat
beginnt, aber stattdessen:
^cat entspricht einer Zeile, die mit c als erstem Zeichen beginnt, gefolgt von ein a, gefolgt von einem Text von t.
Es gibt keinen Unterschied in den Ergebnissen dieser beiden Interpretationen, aber es ist einfacher, die interne Logik neu aufgetretener regulärer Ausdrücke zu verstehen, indem man sie anhand von Zeichen interpretiert.
Entsprechen Sie einem von mehreren Zeichen
Wenn wir nach dem Wort „grau“ suchen müssen und nicht sicher sind, ob es als „grau“ geschrieben ist, können wir es verwenden reguläre Ausdrücke Formelstruktur [...]. Es ermöglicht dem Benutzer, Zeichen aufzulisten, von denen erwartet wird, dass sie irgendwo übereinstimmen, was normalerweise als Zeichengruppe bezeichnet wird.
Gr[ea]y bedeutet also: Zuerst g finden, gefolgt von einem r, dann einem a oder e und schließlich einem y.
Innerhalb der Zeichengruppe stellt das Zeichenmetazeichen „-“ einen Bereich dar:
[0-9A-Z_!.?] kann einer Zahl, einem Großbuchstaben, einem Unterstrich, einem Ausrufezeichen, einem Punkt oder einem Fragezeichen entsprechen.
Exklusive Zeichengruppe
Ersetzen Sie [...] durch [^...]. Diese Zeichengruppe entspricht allen nicht aufgeführten Zeichen. Beispiel: [^1-6] entspricht jedem Zeichen außer 1 bis 6. Das ^ am Anfang dieser Gruppe bedeutet Ausschluss. Hier werden also nicht die Zeichen aufgelistet, die Sie abgleichen möchten, sondern die Zeichen, die Sie nicht abgleichen möchten.
Verwenden Sie einen Punkt, um ein beliebiges Zeichen zu finden.
Metazeichen. Dies ist eine einfache Möglichkeit, eine Zeichengruppe zu schreiben, die für ein beliebiges Zeichen verwendet wird. Wenn wir in einem Ausdruck den Platzhalter „Übereinstimmung mit jedem Zeichen“ verwenden müssen, ist die Verwendung des Punkts praktisch.
entspricht jedem Unterausdruck
Das Metazeichen | ist ein sehr prägnantes Metazeichen, das „oder“ bedeutet. Darauf aufbauend können wir verschiedene Unterausdrücke zu einem Gesamtausdruck kombinieren, und dieser Gesamtausdruck kann mit jedem Unterausdruck übereinstimmen.
Optionale Elemente
Jetzt schauen wir uns die Abstimmung von Farbe und Farbe an. Der Unterschied zwischen ihnen besteht darin, dass das folgende Wort ein u mehr hat als das vorherige. Wir können coloru?r verwenden, um dieses Problem zu lösen. Das Metazeichen ? (also das Fragezeichen) steht für optionale Optionen. Das Hinzufügen nach einem Zeichen bedeutet, dass das Zeichen hier erscheinen darf, sein Vorkommen jedoch keine notwendige Bedingung für eine erfolgreiche Übereinstimmung ist.
Andere Quantoren: Wiederholtes Vorkommen von
+ (Pluszeichen) und * (Sternchen) funktioniert ähnlich wie Fragezeichen. Das Metazeichen + bedeutet, dass das unmittelbar vorhergehende Element einmal oder mehrmals vorkommt, während * bedeutet, dass das unmittelbar vorhergehende Element beliebig oft oder gar nicht vorkommt.
Schauen Sie sich als nächstes einen TAG wie
Klammern und Rückverweise
Bisher haben wir zwei Verwendungszwecke von Klammern gesehen: 1. Begrenzung des Bereichs mehrerer Optionen; 2. Kombination mehrerer Zeichen zu einer Einheit, abhängig von Quantifizierern wie Fragen Markierungen oder Sternchen funktionieren. Jetzt möchte ich eine weitere Verwendung von Klammern vorstellen, nämlich die Rückreferenzierung. Obwohl sie in egrep nicht üblich ist (obwohl die beliebte GNU-Version diese Funktion unterstützt), ist sie in anderen Tools sehr verbreitet.
In Tool-Software, die Rückverweise unterstützt, können sich Klammern den Text „merken“, der mit den darin enthaltenen Unterausdrücken übereinstimmt. Unabhängig davon, um welche Texte es sich handelt, kann sich die Metazeichenfolge 1 diese merken.
Natürlich können wir in einem Ausdruck mehrere Klammern verwenden. Verwenden Sie dann 1, 2, 3 usw., um den Text darzustellen, der mit dem ersten, zweiten und dritten Klammersatz übereinstimmt. Klammern werden in der Reihenfolge des Erscheinens der offenen Klammern '(' von links nach rechts ausgeführt, sodass 1 in ([a-z])([0-9])12 den Inhalt der [a-z]-Übereinstimmung darstellt, während 2 [0 - 9] Passende Inhalte.
Der magische Ausweg
besteht darin, dass wir manchmal einige Symbole wie .+*? zuordnen müssen, gleichzeitig aber feststellen, dass es sich um Metasymbole handelt Wir können sie vor
Einige nützliche Abkürzungen
t Tabulatorzeichen
n Zeilenvorschubzeichen
r Wagenrücklaufzeichen
s Alle Leerzeichen wie Leerzeichen, Zeilenumbruch, Tabulatoreinzug usw. Alle Leerzeichen
S Jedes Zeichen außer s
w [a-zA-Z0-9] ist in w+ sehr nützlich und kann verwendet werden, um ein Wort zu finden
W Jedes Zeichen außer w
d [0-9], das heißt, die Zahl
D jedes Zeichen außer d, also [^0-9]