Arbeiten mit regulären Ausdrücken in Java

Inhaltsverzeichnis
In heutigen Informationssystemen ist es normal, Suchfunktionen zu sehen, diese Funktionen müssen jedes Mal verarbeitet werden Muster von vielen weiteren Komplexen. Um jeden Fall im Einzelnen betrachten zu können, würde es einige tausend Jahre dauern, weshalb Mechanismen entwickelt wurden, die es erlauben, eine formulierte Darstellung von Suchen zu etablieren.
Diese Formeln finden Sie im Reguläre Ausdrücke, die es uns ermöglichen, Muster für die Auswertung von Textzeichenfolgen zu erstellen und einen positiven oder negativen Wert zurückzugeben, wenn diese Zeichenfolge der ausgedrückten Formel entspricht oder nicht.
In Java Wir können reguläre Ausdrücke auf einfache Weise implementieren, aber dies erfordert ein ziemlich umfangreiches Studium durch den Entwickler, damit er die verschiedenen Elemente lernen kann, die es enthält.
Die Art und Weise, wie wir die Formeln ausdrücken können, mit denen wir unsere Muster mit einer bestimmten Codekonstruktion testen können, nennen wir dies die Syntax für reguläre Ausdrücke.
Was erlaubt uns die Syntax?Die Syntax ermöglicht es uns, Muster nach Art zu erstellen Zeichen, Menge, Kombination von Zeichen und Mengen, mit einem bestimmten Element beginnen, einen Ausdruck für den Mittelpunkt der Formel und ein Ende festlegen. Damit können wir ganz spezifische Muster identifizieren, die in unserem Programm benötigt werden, oder eine Suche in einem Text oder einer Datenbank adäquater filtern.
Sehen wir uns unten eine kleine Liste der Elemente an, die am häufigsten in regulären Ausdrücken mit verwendet werden Java, es gibt viel mehr Elemente als die in diesem Tutorial gezeigten, daher wird empfohlen, eigene Nachforschungen anzustellen, um das Wissen zu vertiefen:
Zeilenanfang\^ Mit diesem Element fahren wir fort, um anzuzeigen, um Java was eine Zeile im regulären Ausdruck beginnt.
Ende der Linie$ Mit diesem Symbol zeigen wir an, dass wir die Linie beendet haben.
Charakterliste[] Mit Klammern zeigen wir dem regulären Ausdruck an, dass er nach einer der darin enthaltenen Listen suchen soll.
Ausschließen[\^] Es ermöglicht uns, jedes Zeichen auszuwählen, das nicht aufgeführt ist.
Quantor{j, k} Finde heraus, was drin ist J wie oft angegeben k; {J,} in diesem zweiten Fall, was auch immer drin ist J ein oder mehrere Male; schließlich {J} zeigt an, dass das, was drin ist, erscheinen soll J nur einmal.
Wortzeichen\ w Finde die Charaktere, die zu gehören Wort, aber wenn wir verwenden \ W es tut das Gegenteil, sucht Zeichen, die nicht dazugehören.
Ziffern\ D Es ermöglicht uns, Übereinstimmungen mit nur Ziffern zu erstellen und wenn wir verwenden \ D Wir finden alles, was keine Ziffer oder kein numerisches Zeichen ist.
Rohlinge\ S Es ermöglicht uns, Leerzeichen wie Tabs, Leerzeichen abzugleichen, aber wenn wir verwenden \ S tut das Gegenteil, es passt zu allem, was kein Leerraum ist.
Wie wir sehen, können wir mit diesen wenigen Elementen verschiedene Kombinationen bauen, mit denen wir relativ komplexe Muster erhalten.
Wenn wir einen ausprobieren wollen regulärer Satz Vor dem Kompilieren eines Programms können wir die Seite rubular.com verwenden, auf der wir die Muster in Echtzeit auswerten können.

VERGRÖSSERN

Wir führen ein einfaches Beispiel durch, bei dem wir a . testen werden regulärer Ausdruck zum Validieren einer E-Mail, wir verwenden Folgendes:
[_ a-z0-9 -] + (\. [_ a-z0-9 -] +) * @ [a-z0-9 -] + (\. [a-z0-9 -] +) * (\ . [az] {2,3}) $

Zuerst müssen wir den regulären Ausdruck in das erste Feld des Formulars der Seite von eingeben rubular.com dann im Feld namens dein Teststring Hier werden wir verschiedene E-Mails testen, um zu überprüfen, ob die Regex funktioniert. Sehen wir uns an, wie sich der Validator verhält, wenn wir eine ungültige E-Mail eingeben:

VERGRÖSSERN

Wie wir sehen, fehlt in unserer Beispiel-E-Mail der Punkt, daher ist sie ungültig und nicht erzeugt keine Übereinstimmung Beim regulären Ausdruck korrigieren wir ihn, indem wir den fehlenden Punkt platzieren und der Validator generiert automatisch eine positive Antwort, die uns zeigt, dass unser regulärer Ausdruck problemlos funktioniert.

VERGRÖSSERN

Wie wir sehen, ist dies eine sehr nützliche Ressource, wenn wir lernen, reguläre Ausdrücke nicht nur in Java wenn nicht in irgendeiner Sprache.
Sobald wir wissen, was jedes der grundlegenden Elemente der Syntax tut, müssen wir jetzt lernen, wie wir eine Suche nach einem Muster innerhalb Java, damit können wir sehen, welche Methoden, Klassen und Pakete ins Spiel kommen, wenn wir reguläre Ausdrücke verwenden.
Das erste, was wir wissen sollten, ist, dass alle diese Dienstprogramme im Paket enthalten sind java.util.regex, also müssen wir für diese Beispiele dieses Paket zu Beginn unserer Klassen einschließen.
Sobald dies erledigt ist, können wir auf folgende Weise auf ein Muster testen:
 if (ourString.matches (ourExpression)) {// Wenn es hier übereinstimmt, führen wir einen Code aus} 

Wir sehen, dass wir die Methode verwenden Streichhölzer (), Dadurch wird die Zeichenfolge anhand des Regex-Musters ausgewertet und zurückgegeben Stimmt oder falsch, falls die Zeichenkette dem Muster entspricht oder nicht.
Diese Art der Verwendung ist in kleinen Validierungen in Ordnung, aber wenn wir eine wiederkehrende Validierung verwenden, dh sie wird viele Male in unserem Programm erscheinen, ist es am besten, eine kleine Routine oder Klasse zu erstellen, die es uns ermöglicht, den String auszuwerten parametrischer Form, d. h. eine Routine oder Methode, die es uns ermöglicht, einen String einzugeben und true oder false zurückzugeben, wobei bereits ein Vergleich mit einem bestimmten Muster erfolgt.
Im folgenden Programm werden wir ein kleines Muster testen und es mit ein paar Strings vergleichen und das Programm wird uns sagen, welches es tut. Spiel, das heißt, welcher passt und welcher nicht, sehen wir uns den Code an und dann sehen wir, wie er funktioniert:
 java.util.regex importieren.*; öffentliche Klasse TestPatterns {öffentliche statische void main (String [] argv) {String pattern = "Q [u] \ d + \."; String [] input = {"QA777. Ist die Kennung unseres Produkts.", "Quack, Quack, Quack!" }; Muster p = Muster.compile (Muster); for (String in: input) {boolean found = p.matcher (in) .LookingAt (); System.out.println ("'" + Muster + "'" + (gefunden? "Übereinstimmungen'": "entspricht nicht '") + in + "'"); }}} 

Hier sehen wir, wie wir als erstes das am Anfang dieses Abschnitts erwähnte Paket importieren, um auf diese Weise die Funktionalitäten der Suche nach regulären Ausdrücken zu erhalten. Dann bauen wir ein Muster, das wir verwenden werden, ist unser Programm, in diesem Fall ist es ein Muster, das dem Buchstaben „Q"Dann muss es ein beliebiges Zeichen außer dem Buchstaben haben"oder„Und muss mit einem Punkt enden. Dann kompilieren wir unser Muster mit der Methode kompilieren und wir können es verwenden, um die Übereinstimmungen zu machen. Wenn das Muster schließlich übereinstimmt, wird es mit dem Wort gedruckt Spiel sonst drucken wir es passt nicht.
Sehen wir uns im folgenden Bild an, wie dies aussieht, wenn wir das Programm ausführen:

VERGRÖSSERN

Wir notieren dann, wie erklärt, die erste Zeichenfolge oder Kette, wenn sie übereinstimmt, die zweite jedoch nicht, und zur weiteren Bezugnahme platzieren wir das Muster, nach dem der Vergleich durchgeführt werden soll.
Wir werden jetzt ein fortgeschritteneres Beispiel ausführen, wir werden identifizieren, welcher Teil unserer Zeichenfolge übereinstimmt. Dies ist sehr nützlich, wenn wir Textsuchen durchführen, da wir damit die Übereinstimmungen der Eingabe des Benutzers hervorheben können.
Dazu verwenden wir die gleiche Basis unseres vorherigen Programms mit einigen Modifikationen, sehen wir uns den Code und dann die Erklärung an:
 java.util.regex importieren.*; public class Match {public static void main (String [] argv) {String pattern = "Q [u] \ d + \."; Muster r = Muster.compile (Muster); String text = "Die ID lautet: QW990. Ende des Tests!"; Matcher m = r.Matcher (Text); if (m.find ()) {System.out.println (Muster + "entspricht \" "+ m.gruppe (0) +" \ "innerhalb \" "+ Text +" \ ""); } else {System.out.println ("Keine Übereinstimmungen"); }}} 

Noch einmal sehen wir, wie wir unser Programm inklusive Paket starten java.util.regex.*. Dann verwenden wir das gleiche Muster aus dem vorherigen Programm und kompilieren es mit der Methode kompilieren, das Interessante kommt jetzt, wir haben die Methode benutzt Matcher () um die Übereinstimmung zu finden und dann mit der Methode finden () und die Methode Gruppe () wir können genau die Übereinstimmungen extrahieren, schließlich erstellen wir die entsprechenden Siebdrucke. Mal sehen, wie unser Programm jetzt aussieht:

VERGRÖSSERN

So sehen wir dann, wie wir das Wort isolieren konnten, das wirklich dem Muster entspricht, das wir für den Vergleich der regulärer Satz.
Eine der am häufigsten verwendeten Anwendungen ist auf der Formen, wo wir Validierungen von durchführen können E-Mails, Telefonnummern, Kreditkarten, Passwörter, IP-Adressen, Benutzernamen, Postleitzahlen und sogar überprüfen, ob alle unsere Tags in unserem HTML-Dokument korrekt geschlossen sind, was uns die Möglichkeit gibt, mehr Sicherheit bei der Verarbeitung von Texten zu erreichen, die von Benutzern eingegeben werden.
Aber nicht nur bei Validierungen in Feldern eines Formulars, wie wir in unserem letzten Beispiel festgestellt haben, können wir das auch lange Textsuchen Durch ein bestimmtes Muster können wir damit in sehr komplexen Textdokumenten systematisch suchen und dadurch viel Zeit sparen, indem wir einfach ein kleines Programm schreiben.
Damit beenden wir dieses Tutorial. Wir haben gelernt, wie wir von verschiedenen Elementen zum Ausdrücken von Situationen in unseren Mustern zu den entsprechenden Vergleichen des Textes oder der Zeichen, die wir auswerten möchten, übergehen können, all dies dank der Reguläre Ausdrücke. Diese Auswertungen sind dank der Optimierungen, die die Sprache in den von ihr angebotenen Methoden vornimmt, ziemlich schnell, sodass sie sich sehr gut für die Konstruktion von Schnittstellen eignen, bei denen wir den vom Benutzer eingegebenen Text suchen und validieren müssen.Hat dir dieses Tutorial gefallen und geholfen?Sie können den Autor belohnen, indem Sie diesen Knopf drücken, um ihm einen positiven Punkt zu geben

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave