Eines der Dinge, die ich am Linux-Terminal immer geliebt habe, ist das, was Sie mit regulären Ausdrücken erreichen können. Unabhängig davon, ob wir komplizierten Text finden oder durch etwas anderes ersetzen müssen, kann die Verwendung regulärer Ausdrücke die Arbeit erheblich vereinfachen. Beginnen wir am Anfang:
Was ist ein regulärer Ausdruck?
Ein regulärer Ausdruck ist eine Reihe von Sonderzeichen, mit denen wir einen Text beschreiben können, den wir finden möchten. Wenn wir beispielsweise nach dem Wort "Linux" suchen möchten, reicht es aus, dieses Wort in das von uns verwendete Programm aufzunehmen. Das Wort selbst ist ein regulärer Ausdruck. Bisher scheint es sehr einfach zu sein, aber was ist, wenn wir alle Zahlen in einer bestimmten Datei finden wollen? Oder alle Zeilen, die mit einem Großbuchstaben beginnen? In diesen Fällen können Sie kein einfaches Wort mehr sagen. Die Lösung besteht darin, einen regulären Ausdruck zu verwenden.
Reguläre Ausdrücke vs. Dateimuster.
Bevor wir uns mit regulären Ausdrücken befassen, möchte ich ein häufiges Missverständnis über reguläre Ausdrücke beseitigen. Ein regulärer Ausdruck ist nicht das, was wir als Parameter in Befehlen wie rm, cp usw. einfügen, um auf verschiedene Dateien auf der Festplatte zu verweisen. Das wäre ein Dateimuster. Reguläre Ausdrücke sind unterschiedlich, obwohl sie einige gemeinsame Zeichen verwenden. Ein Dateimuster wird für die Dateien auf der Festplatte ausgelöst und gibt diejenigen zurück, die vollständig mit dem Muster übereinstimmen, während ein regulärer Ausdruck für einen Text ausgelöst wird und die Zeilen zurückgibt, die den gesuchten Text enthalten. Zum Beispiel der reguläre Ausdruck, der dem Muster entspricht *.*
es wäre so etwas wie ^.*\..*$
Arten von regulären Ausdrücken.
Nicht alle Programme verwenden dieselben regulären Ausdrücke. Nicht viel weniger. Es gibt mehrere mehr oder weniger Standardtypen regulärer Ausdrücke, aber es gibt Programme, die die Syntax geringfügig ändern, ihre eigenen Erweiterungen enthalten oder sogar völlig andere Zeichen verwenden. Wenn Sie reguläre Ausdrücke mit einem Programm verwenden möchten, das Sie nicht gut kennen, müssen Sie zunächst im Handbuch oder in der Dokumentation des Programms nachsehen, wie die erkannten regulären Ausdrücke aussehen.
Zunächst gibt es zwei Haupttypen regulärer Ausdrücke, die vom POSIX-Standard abgedeckt werden, den Linux-Tools verwenden. Sie sind die grundlegenden und erweiterten regulären Ausdrücke. Bei vielen Befehlen, die mit regulären Ausdrücken wie grep oder sed arbeiten, können Sie diese beiden Typen verwenden. Ich werde unten darüber sprechen. Es gibt auch reguläre Ausdrücke im PERL-Stil, und dann gibt es Programme wie vim oder emacs, die Varianten davon verwenden. Je nachdem, was wir tun möchten, ist es möglicherweise besser, das eine oder andere zu verwenden.
Reguläre Ausdrücke testen.
Die Syntax regulärer Ausdrücke ist nicht trivial. Wenn wir einen komplizierten regulären Ausdruck schreiben müssen, stehen wir vor einer Reihe von Sonderzeichen, die auf den ersten Blick nicht zu verstehen sind. Um zu lernen, wie man sie verwendet, ist es wichtig, eine Möglichkeit zu haben, alle gewünschten Tests durchzuführen und die Ergebnisse leicht zu sehen. Aus diesem Grund werde ich jetzt mehrere Befehle eingeben, mit denen wir die Tests durchführen und alles experimentieren können, was wir brauchen, bis die regulären Ausdrücke dominiert sind.
Der erste ist der Befehl grep. Dies ist der Befehl, den wir am häufigsten für Suchvorgänge verwenden. Die Syntax lautet wie folgt:
grep [-E] 'REGEX' FICHERO
COMANDO | grep [-E] 'REGEX'
Ich empfehle, reguläre Ausdrücke immer in einfache Anführungszeichen zu setzen, damit die Shell nicht dazu kommt. Die erste Möglichkeit besteht darin, einen regulären Ausdruck in einer Datei zu finden. Die zweite ermöglicht das Filtern der Ausgabe eines Befehls durch einen regulären Ausdruck. Standardmäßig verwendet grep grundlegende reguläre Ausdrücke. Die Option -E dient zur Verwendung erweiterter regulärer Ausdrücke.
Ein Trick, mit dem wir sehen können, wie reguläre Ausdrücke funktionieren, besteht darin, die Verwendung von Farbe im Befehl grep zu aktivieren. Auf diese Weise wird der Teil des Textes hervorgehoben, der dem von uns verwendeten regulären Ausdruck entspricht. Um die Farbe im Befehl grep zu aktivieren, stellen Sie einfach sicher, dass die Umgebungsvariable GREP_OPTIONS
im Wert enthalten --color
, was mit diesem Befehl gemacht werden kann:
GREP_OPTIONS=--color
Wir können es in die .bashrc-Datei einfügen, damit es immer aktiviert ist.
Eine andere Möglichkeit, reguläre Ausdrücke zu verwenden, ist die Verwendung des Befehls sed. Dies ist besser zum Ersetzen von Text geeignet, kann aber auch zum Suchen verwendet werden. Die Syntax dafür wäre wie folgt:
sed -n[r] '/REGEX/p' FICHERO
COMANDO | sed -n[r] '/REGEX/p'
Der Befehl sed verwendet standardmäßig auch grundlegende reguläre Ausdrücke. Mit der Option -r können Sie erweiterte reguläre Ausdrücke verwenden.
Ein weiterer Befehl, den ich auch benennen möchte, ist awk. Dieser Befehl kann für viele Zwecke verwendet werden, da Sie damit Skripte in Ihrer eigenen Programmiersprache schreiben können. Wenn wir einen regulären Ausdruck in einer Datei oder in der Ausgabe eines Befehls finden möchten, können Sie ihn folgendermaßen verwenden:
awk '/REGEX/' FICHERO
COMANDO | awk '/REGEX/'
Dieser Befehl verwendet immer erweiterte reguläre Ausdrücke.
Für unsere Tests benötigen wir außerdem einen Text, der als Beispiel für die Suche dient. Wir können den folgenden Text verwenden:
- Lista de páginas wiki: ArchLinux: https://wiki.archlinux.org/ Gentoo: https://wiki.gentoo.org/wiki/Main_Page CentOS: http://wiki.centos.org/ Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ - Fechas de lanzamiento: Arch Linux: 11-03-2002 Gentoo: 31/03/2002 CentOs: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20/10/2004 Desde Linux Rulez.
Dies ist der Text, den ich für die Beispiele des restlichen Beitrags verwenden werde. Ich empfehle daher, ihn in eine Datei zu kopieren, damit er vom Terminal aus griffbereit ist. Sie können den gewünschten Namen eingeben. Ich habe es Regex genannt.
Beginn der Lektion.
Jetzt haben wir alles, was wir brauchen, um reguläre Ausdrücke zu testen. Lass uns nach und nach gehen. Ich werde einige Beispiele für Suchvorgänge mit regulären Ausdrücken einfügen, in denen ich erkläre, wofür jedes Zeichen ist. Sie sind keine sehr guten Beispiele, aber da ich einen sehr langen Beitrag haben werde, möchte ich ihn nicht mehr komplizieren. Und ich werde nur die Oberfläche dessen kratzen, was mit regulären Ausdrücken gemacht werden kann.
Am einfachsten ist es, nach einem bestimmten Wort zu suchen. Nehmen wir beispielsweise an, wir möchten nach allen Zeilen suchen, die das Wort "Linux" enthalten. Dies ist am einfachsten, da wir nur schreiben müssen:
grep 'Linux' regex
Und wir können das Ergebnis sehen:
BogenLinux: https://wiki.archlinux.org/ Arch Linux: 11-03-2002 Von Linux Regelz.
Dies sind die drei Zeilen, die das Wort "Linux" enthalten, das, wenn wir den Farbtrick verwendet haben, hervorgehoben erscheint. Beachten Sie, dass es das gesuchte Wort erkennt, auch wenn es Teil eines längeren Wortes wie in "ArchLinux" ist. Das Wort "Linux" in der URL "https://wiki.archlinux.org/" wird jedoch nicht hervorgehoben. Das liegt daran, dass es dort mit dem Kleinbuchstaben "l" angezeigt wird und wir es in Großbuchstaben gesucht haben. Der Befehl grep hat Optionen dafür, aber ich werde in einem Artikel, der sich mit regulären Ausdrücken befasst, nicht darauf eingehen.
Mit diesem einfachen Test können wir die erste Schlussfolgerung ziehen:
- Ein normales Zeichen, das in einen regulären Ausdruck eingefügt wird, stimmt mit sich selbst überein.
Das heißt, wenn Sie den Buchstaben "a" eingeben, wird nach dem Buchstaben "a" gesucht. Es scheint logisch, oder? 🙂
Angenommen, wir möchten nach dem Wort "CentO" suchen, gefolgt von einem beliebigen Zeichen, aber nur einem einzelnen Zeichen. Hierfür können wir das Zeichen "." Verwenden, ein Platzhalter, der mit jedem Zeichen übereinstimmt, aber nur mit einem:
grep 'CentO.' regex
Und das Ergebnis ist:
CentOS: http://wiki.centos.org/ CentOs: 14-05-2004 03:32:38
Dies bedeutet, dass es das "S" in "CentOS" enthält, obwohl es in einem Fall in Großbuchstaben und in einem anderen in Kleinbuchstaben geschrieben ist. Wenn irgendein anderes Zeichen an dieser Stelle auftauchen würde, würde es es auch einschließen. Wir haben bereits die zweite Regel:
- Der Charakter "." passt zu einem beliebigen Zeichen.
Es ist nicht mehr so trivial, wie es schien, aber damit können wir nicht viel tun. Gehen wir noch etwas weiter. Nehmen wir an, wir möchten die Zeilen finden, in denen die Jahre 2002 und 2004 erscheinen. Sie scheinen wie zwei Suchen zu sein, aber sie können auf einmal so durchgeführt werden:
grep '200[24]' regex
Was bedeutet, dass wir die Zahl 200 gefolgt von 2 oder 4 finden wollen. Und das Ergebnis ist folgendes:
Arch-Linux: 11-03-2002 Gentoo: 31. /2002 CentOS: 14-05-2004 03:32:38 Ubuntu: 20/10/2004
Was uns zur dritten Regel bringt:
- Mehrere in Klammern eingeschlossene Zeichen stimmen mit den Zeichen in Klammern überein.
Die Klammern geben mehr Spiel. Sie können auch zum Ausschließen von Zeichen verwendet werden. Angenommen, wir möchten nach Websites suchen, auf denen das Zeichen ":" angezeigt wird, auf die jedoch nicht "/" folgt. Der Befehl würde so lauten:
grep ':[^/]' regex
Es geht einfach darum, ein "^" als erstes Zeichen in die Klammer zu setzen. Sie können alle gewünschten Zeichen unten einfügen. Das Ergebnis dieses letzten Befehls ist das Folgende:
ArchLinux: https://wiki.archlinux.org/ Gentoo: https://wiki.gentoo.org/wiki/Main_Page CentOS: http://wiki.centos.org/ Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ Arch Linux: 11-03-2002 Gentoo: 31 CentOs: 14-05-2004 03:32:38 Debian: 16 Ubuntu: 20/10/2004
Jetzt werden die ":" hinter den Distributionsnamen hervorgehoben, aber nicht die in den URLs, da die URLs "/" hinter sich haben.
- Wenn Sie das Zeichen "^" an den Anfang einer Klammer setzen, entspricht dies jedem Zeichen außer den anderen Zeichen in der Klammer.
Wir können auch eine Reihe von Zeichen angeben. Wenn Sie beispielsweise nach einer beliebigen Zahl suchen, gefolgt von einem "-", sieht dies folgendermaßen aus:
grep '[0-9]-' regex
Damit geben wir ein Zeichen zwischen 0 und 9 und dann ein Minuszeichen an. Mal sehen, das Ergebnis:
Arch-Linux: 11-03-2002 CentOs: 14-05-2004 03: 32: 38
In den Klammern können mehrere Bereiche angegeben werden, um Bereiche mit einzelnen Zeichen zu mischen.
- Das Platzieren von zwei durch "-" getrennten Zeichen in den Klammern entspricht jedem Zeichen innerhalb des Bereichs.
Mal sehen, ob wir den ersten Teil der URLs auswählen können. Derjenige, der "http" oder "https" sagt. Sie unterscheiden sich nur in den letzten "s", also machen wir es wie folgt:
grep -E 'https?' regex
Das Fragezeichen wird verwendet, um das Zeichen links davon optional zu machen. Jetzt haben wir dem Befehl die Option -E hinzugefügt. Dies liegt daran, dass die Abfrage ein Merkmal erweiterter regulärer Ausdrücke ist. Bis jetzt verwendeten wir grundlegende reguläre Ausdrücke, sodass wir nichts eingeben mussten. Mal sehen, das Ergebnis:
ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/wiki/Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/ Ubuntu: https: //wiki.ubuntu.com/
Wir haben also bereits eine neue Regel:
- Ein Zeichen gefolgt von "?" entspricht diesem oder keinem Charakter. Dies gilt nur für erweiterte reguläre Ausdrücke.
Jetzt werden wir zwei völlig verschiedene Wörter finden. Mal sehen, wie man die Zeilen findet, die sowohl das Wort "Debian" als auch "Ubuntu" enthalten.
grep -E 'Debian|Ubuntu' regex
Mit der vertikalen Leiste können wir zwei oder mehr verschiedene reguläre Ausdrücke trennen und die Linien finden, die zu einem von ihnen passen:
Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ Debian: 16 / 08 / 1993 Ubuntu: 20 / 10 / 2004
- Das Zeichen «|» dient dazu, mehrere reguläre Ausdrücke zu trennen und mit einem von ihnen übereinzustimmen. Es ist auch spezifisch für erweiterte reguläre Ausdrücke.
Lass uns weitermachen. Jetzt werden wir nach dem Wort "Linux" suchen, aber nur dort, wo es nicht an einem anderen Wort auf der linken Seite festhält. Wir können es so machen:
grep '\
Das wichtige Zeichen hier ist "<", aber es muss durch Setzen von "\" vorangestellt werden, damit grep es als Sonderzeichen interpretiert. Das Ergebnis ist wie folgt:
Bogen Linux: 11-03-2002 Von Linux Regelz.
Sie können auch "\>" verwenden, um nach Wörtern zu suchen, die nicht direkt nebeneinander liegen. Lassen Sie uns mit einem Beispiel gehen. Versuchen wir diesen Befehl:
grep 'http\>' regex
Die Ausgabe, die es erzeugt, ist folgende:
CentOS: http: //wiki.centos.org/
"Http" kam heraus, aber nicht "https", da in "https" rechts neben dem "p" noch ein Zeichen steht, das Teil eines Wortes sein kann.
- Die Zeichen "<" und ">" stimmen mit dem Anfang bzw. Ende eines Wortes überein. Diese Zeichen müssen maskiert werden, damit sie nicht als wörtliche Zeichen interpretiert werden.
Wir gehen mit etwas komplizierteren Dingen um. Das "+" - Zeichen entspricht dem Zeichen auf der linken Seite und wird mindestens einmal wiederholt. Dieses Zeichen ist nur mit erweiterten regulären Ausdrücken verfügbar. Damit können wir beispielsweise Sequenzen mehrerer Zahlen in einer Reihe suchen, die mit ":" beginnen.
grep -E ':[0-9]+' regex
Ergebnis:
CentOs: 14 05: 32: 38
Die Nummer 38 wird ebenfalls hervorgehoben, da sie ebenfalls mit ":" beginnt.
- Das "+" - Zeichen entspricht dem Zeichen auf der linken Seite und wird mindestens einmal wiederholt.
Sie können die Anzahl der Wiederholungen auch mit "{" und "}" steuern. Die Idee ist, eine Zahl in geschweiften Klammern zu setzen, die die genaue Anzahl der gewünschten Wiederholungen angibt. Sie können auch einen Bereich festlegen. Sehen wir uns Beispiele für die beiden Fälle an.
Zuerst werden wir alle vierstelligen Sequenzen finden, die es gibt:
grep '[0-9]\{4\}' regex
Beachten Sie, dass die geschweiften Klammern maskiert werden müssen, wenn wir grundlegende reguläre Ausdrücke verwenden, nicht jedoch, wenn wir erweiterte verwenden. Mit erweitert wäre es so:
grep -E '[0-9]{4}' regex
In beiden Fällen wäre das Ergebnis:
Arch-Linux: 11-03-2002 Gentoo: 31. /2002 CentOS: 14-05-2004 03:32:38 Debian: 16/08/1993 Ubuntu: 20. /2004
- Die Zeichen "{" und "}" mit einer Zahl dazwischen stimmen mit dem vorherigen Zeichen überein, das die angegebene Anzahl von Malen wiederholt wurde.
Nun das andere Beispiel mit den Klammern. Angenommen, wir möchten Wörter mit 3 bis 6 Kleinbuchstaben finden. Wir könnten Folgendes tun:
grep '[a-z]\{3,6\}' regex
Und das Ergebnis wäre:
- Lista de Seites Wiki: TOrchLinux: https:/ /Wiki.Archlinux.org/ G.dann: https:/ /Wiki.Gentoo.org/Wiki/Main_P Alter CentOS: http:/ /Wiki.CentOS.org/ D.Ebian: https:/ /Wiki.Debian.org/ ODERRebellion: https:/ /Wiki.ubuntu.com/ - F.dir fehlt de Einführung: TOrch Linux: 11-03-2002 G.dann: 31 C.entOs: 14-05-2004 03:32:38 DEbian: 16 U.Rebellion: 20 D.esde Linux RUlez.
Was, wie Sie sehen, nicht so aussieht, wie wir es wollten. Das liegt daran, dass der reguläre Ausdruck die Buchstaben in anderen Wörtern findet, die länger sind. Versuchen wir diese andere Version:
grep '\<[a-z]\{3,6\}\>' regex
Ergebnis:
- Liste der Seiten Wiki: ArchLinux: https:/ /Wiki.archlinux.org/ Gentoo: https:/ /Wiki.Gentoo.org/Wiki/ Main_Page CentOS: http:/ /Wiki.CentOS.org/ Debian: https:/ /Wiki.Debian.org/ Ubuntu: https:/ /Wiki.ubuntu.com/
Das sieht schon eher so aus, wie wir es wollten. Was wir getan haben, ist, dass das Wort kurz vor dem ersten Buchstaben beginnt und kurz nach dem letzten endet.
- Die Zeichen "{" und "}" mit zwei durch Komma getrennten Zahlen stimmen mit dem vorherigen Zeichen überein, das die durch die beiden Zahlen angegebene Anzahl von Malen wiederholt.
Schauen wir uns nun ein Zeichen an, das eine Primzahl von "+" ist. Es ist "*" und seine Funktionsweise ist nur sehr ähnlich, nur dass es mit einer beliebigen Anzahl von Zeichen einschließlich Null übereinstimmt. Das heißt, es macht dasselbe wie das "+", erfordert jedoch nicht, dass das Zeichen links davon im Text erscheint. Versuchen wir beispielsweise, nach den Adressen zu suchen, die im Wiki beginnen und in org enden:
grep 'wiki.*org' regex
Mal sehen, das Ergebnis:
ArchLinux: https: //wiki.archlinux.org/ Gentoo: https: //wiki.gentoo.org/ wiki / Main_Page CentOS: http: //wiki.centos.org/ Debian: https: //wiki.debian.org/
Perfect.
Nun das letzte Zeichen, das wir sehen werden. Das Zeichen "\" wird verwendet, um das Zeichen rechts davon zu maskieren, sodass es seine besondere Bedeutung verliert. Zum Beispiel: Angenommen, wir möchten die Linien lokalisieren, die in einem Punkt enden. Das erste, was uns einfallen könnte, könnte Folgendes sein:
grep '.$' regex
Das Ergebnis ist nicht das, wonach wir suchen:
- Liste der Wiki-Seiten: ArchLinux: https://wiki.archlinux.org/ Gentoo: https://wiki.gentoo.org/wiki/Main_Page CentOS: http://wiki.centos.org/ Debian: https://wiki.debian.org/ Ubuntu: https://wiki.ubuntu.com/ - Veröffentlichungsdaten: Arch Linux: 11-03-2002 Gentoo: 312 CentOs: 14-05-2004 03:32:38 Debian: 163 Ubuntu: 204 Desde Linux Regelz.
Dies liegt daran, dass das "." stimmt mit allem überein, sodass der reguläre Ausdruck mit dem letzten Zeichen jeder Zeile übereinstimmt, unabhängig davon, um was es sich handelt. Die Lösung lautet:
grep '\.$' regex
Jetzt wollen wir das Ergebnis:
Desde Linux Regelz.
Game Over
Obwohl das Thema der regulären Ausdrücke so komplex ist, dass ich es für eine Reihe von Artikeln geben würde, denke ich, dass ich Ihnen bereits genug Schmerzen bereitet habe. Wenn Sie angekommen sind, herzlichen Glückwunsch. Und wenn Sie das alles in einer Sitzung gelesen haben, nehmen Sie ein Aspirin oder so, weil es nicht gut sein kann.
Im Moment ist das alles. Wenn Ihnen dieser Artikel gefällt, können Sie vielleicht einen anderen schreiben. In der Zwischenzeit empfehle ich Ihnen, alle regulären Ausdrücke im Terminal auszuprobieren, um klar zu sehen, wie sie funktionieren. Und denken Sie daran: Nur Chuck Norris kann HTML mit regulären Ausdrücken analysieren.
Was wäre unser Leben ohne den regulären Ausdruck?
Der Artikel ist sehr nützlich, aber ich werde ihn nach und nach lesen. Vielen Dank.
Danke für deinen Kommentar. Ich glaube immer noch nicht, dass mein Artikel herausgekommen ist. 🙂 Es ist ein Fehler aufgetreten, aber ich hoffe, es ist nützlich. 🙂
Vielen Dank youssssssss! ..
Vor einiger Zeit musste ich ein wenig über reguläre Ausdrücke lernen. Ich danke Ihnen für das Unterrichten und die Schritt-für-Schritt-Anleitung, um jeden einzelnen von ihnen zu lernen.
Sehr gut! .. .. Ich werde das Aspirin bekommen .. ee
Bitte. Mut und reguläre Ausdrücke können nicht mit dir. 🙂
Fantastischer Beitrag! Gut gemacht. Ich frage mich, wie viele Stunden du gebraucht hast 😀
LOL !! Die Frage ist: Wie viele Stunden hätte ich gebraucht, wenn ich alles gesagt hätte, was ich sagen wollte? Unendlich !! 🙂
eine Sache wusste ich nicht, guter Artikel!
Vielen Dank. Es ist mir eine Freude, es mit Ihnen zu teilen.
tolle Erklärung. Herzlichen Glückwunsch! wirklich nützlich!
Ich bin froh, dass Sie es nützlich fanden. Es ist also eine Freude zu schreiben.
Dies sollte an einen besonderen Ort gehen. Wie das Featured, haben aber eine ganz bestimmte Nützlichkeit. Sehr nützlich, obwohl ich mir wünschen würde, dass es auf Vim angewendet wird.
Das ist eine Frage, die ich mir stelle. Ich habe noch ein paar Artikel über reguläre Ausdrücke im Sinn. Und ich könnte über Vim in ihnen sprechen. Es hat einige Unterschiede zu dem, was ich in diesem Artikel erklärt habe. Es geht darum, weiterzumachen. 🙂
Gut Aus!
Ihr Artikel ist sehr gut, er ist merkwürdig. Kürzlich (im Moment) habe ich auf meiner Website einen Eintrag veröffentlicht, den ich seit einigen Tagen vorbereitet habe und in dem ich eine Liste von Metazeichen für reguläre Ausdrücke und einige Beispiele zusammengestellt habe. Und es war fair, teilzunehmen DesdeLinux und sehen Sie sich einen Eintrag zum gleichen Thema an!
Wenn es ein Trost ist, ist meiner VIEL MEHR PUSSY 😀
Sicherlich ist Regex eines der nützlichsten Dinge. Normalerweise verwende ich sie, um die Ausgabe der Befehle zu kürzen und den Teil zu behalten, der mich interessiert, und um dann beispielsweise in einem Bash-Skript damit zu interagieren. Ich habe sie auch häufig an der Universität verwendet und sie sind von entscheidender Bedeutung für die Erstellung von Compilern (bei der Definition von Lexikografie und Parser). Kurz gesagt, eine ganze Welt.
Grüße und sehr sehr gute Arbeit.
Vielen Dank.
Ihr Artikel hat mir auch gefallen. Es ist prägnanter als meins. Es kann als Kurzreferenz dienen. Es ist ein Zufall, dass wir sie gleichzeitig geschrieben haben. Sie können sehen, dass sich die Leute für das Thema interessieren. 🙂
Reguläre Ausdrücke für Dummies =), jetzt ist mir klarer, dass eine Möglichkeit, die Ausgabe mit Farbe für grep zu haben, darin besteht, einen Alias in .bashrc zu erstellen. Alias grep = 'grep –color = always', falls es für jemanden funktioniert .
Grüße
Wahr. Das ist ein anderer Weg, es zu tun. Danke für die Eingabe. 🙂
O_O… Beitrag !!! O_O ...
Vielen Dank für den Beitrag, ich habe eine Weile auf so etwas gewartet lol, ich lasse es offen, um es ruhig zu Hause zu lesen, ohne Probleme, lol zu konzentrieren.
Danke für den Artikel, das tue ich wirklich 😀
Ich wusste, dass es dir gefallen würde. LOL !! Die Wahrheit ist, dass viele Dinge fehlen, aber ich habe bereits einen zweiten Teil im Sinn. 🙂
Toller Artikel, wenn ich ihn nur gestern gelesen hätte, wäre der Unterricht, den ich heute gegeben habe, für meine Schüler noch einfacher gewesen!
LOL !! Schade, dass ich zu spät kam, aber froh, dass es nützlich ist. 🙂
Endlich !!!, super gut die Post ... Ich habe endlich etwas gefunden, das die regulären Ausdrücke klar erklärt ...
Es gibt viele Informationen, aber es ist schwieriger, etwas zu finden, das leicht zu verstehen ist. Ich bin froh, dass ich diese Lücke gefüllt habe. 🙂
Grüße.
Hey, ich brauche Hilfe, ich muss eine Suche in / var / logs mit dem Format durchführen: yymmdd, und die Protokolle lauten 130901.log -130901.log. Ich muss nach allen suchen, die zwischen dem 1. September und dem 11. Oktober liegen. Das einzige, was ich geschafft habe, war den ganzen September zu entfernen, aber ich weiß nicht, wie ich die komplette Kette machen soll:
Beispiel: 1309 [0-3] gibt mir die Protokolle zwischen dem 1. und 30. September zurück, aber ich weiß nicht, wie ich vom 1. bis 11. Oktober auch in dieselbe Kette komme.
Die Verwendung regulärer Ausdrücke ist etwas kompliziert. Mir fällt ein, dass so etwas funktionieren könnte:
13(09[0-3]|10(0|1[01]))
Es ist ein erweiterter regulärer Ausdruck. Sie sagen nicht, welches Tool Sie verwenden, daher kann ich Ihnen keine weiteren Details geben.
Wie auch immer, ich denke, dies ist der Fall, anstatt reguläre Ausdrücke zu verwenden, ist es besser, dies mit find zu tun. Sie können so etwas ausprobieren:
finden. -newermt '01 sep '-a! -newermt '11 oct '-print
Glück. Hoffe das kann dir helfen.
Hallo! Zunächst möchte ich mich bei Ihnen für Ihre Arbeit bedanken, da diese Seite zu meinen "Top 3" der besten Linux-Sites gehört.
Ich übte und wusste nicht, warum ein RegExp auf einer Telefonnummer für mich nicht funktionierte und es war, dass mir das "-E" fehlte (was ich dank dieses Beitrags realisierte).
Ich wollte Sie fragen, ob Sie kein gutes PDF oder keine gute Website kennen, auf der es Übungen zu RegExp gibt, obwohl Sie mit ein wenig Fantasie üben können, sie selbst zu erfinden.
Grüße, Pablo.
Sehr gut, ich habe gerade alles gelesen und ja, jetzt brauche ich ein Aspirin 🙂
Die beste Erklärung, die ich für reguläre Ausdrücke gesehen habe. Mein Dank geht an den Autor für das Teilen dieser Arbeit.
Ein Gruß.
Mir hat eine sehr gute Erklärung sehr gut gefallen