Java Regex - Was sind reguläre Ausdrücke und wie werden sie verwendet?



Der Java Regex ist eine API, mit der ein Muster zum Suchen oder Bearbeiten von Zeichenfolgen definiert wird. In diesem Artikel werden auch verschiedene Klassen von regulären Ausdrücken behandelt, die von Java bereitgestellt werden.

Die Datenextraktion oder -validierung ist ein wichtiger Aspekt jeder Programmiersprache. Eine der beliebtesten Methoden zur Datenvalidierung ist die Verwendung regulärer Ausdrücke. verwendet diesereguläre Ausdrücke zur Beschreibung eines Zeichenmusters. Dieser Artikel über Java Regex listet die verschiedenen Methoden zur Verwendung von Ausdrücken in der folgenden Reihenfolge auf:

Lass uns anfangen!





Was sind reguläre Ausdrücke?

ZU Regulären Ausdruck ist eine Folge von Zeichen, die ein Suchmuster erstellt. Wenn Sie in einem Text nach Daten suchen, können Sie anhand dieses Suchmusters beschreiben, wonach Sie suchen.

Reguläre Ausdrücke - Java Regex - Edureka



Ein regulärer Ausdruck kann a sein einzelnes Zeichen oder ein komplizierteres Muster. Es kann für jede Art von Textsuche und Textersetzungsvorgängen verwendet werden. Ein Regex-Muster besteht aus einfachen Zeichen, wie z / abc / oder eine Kombination aus einfachen und speziellen Zeichen, wie z /ABC/ oder /example(d+).d*/ .

Was ist Java Regex?

Das Java Regex ist eine API, die es gewohnt ist Definieren Sie ein Muster zum Suchen oder Bearbeiten . Es wird häufig verwendet, um die Einschränkung für Zeichenfolgen wie Kennwort- und E-Mail-Validierung zu definieren.

Es gibt verschiedene Methoden zur Verwendung von Java Regex. Gehen wir also weiter und schauen uns die verschiedenen Ausdrücke an.



Matcher-Klasse

Diese Klasse wird verwendet, um Übereinstimmungsoperationen für eine Zeichenfolge auszuführen. Die folgende Tabelle zeigt verschiedene Methoden der Matcher-Klasse.

Methode Beschreibung
Boolesche Übereinstimmungen () Testet, ob der angegebene reguläre Ausdruck mit dem Muster übereinstimmt
boolean find () Wird verwendet, um den nächsten Ausdruck zu finden, der dem Muster entspricht
boolescher Fund (int start) Sucht den nächsten Ausdruck, der dem Muster der angegebenen Startnummer entspricht
String group () Wird verwendet, um die übereinstimmende Teilsequenz zurückzugeben
int start () Gibt den Startindex der übereinstimmenden Teilsequenz zurück
int end () Gibt den Endindex der übereinstimmenden Teilsequenz zurück
int groupCount () Gibt die Gesamtzahl der übereinstimmenden Teilsequenzen zurück

Musterklasse

Die Musterklasse ist eine kompilierte Version des regulären Ausdrucks, mit der das Muster für die Regex-Engine definiert wird.

Methode Beschreibung
statische Musterkompilierung (String regex) Es kompiliert den angegebenen regulären Ausdruck und gibt die Instanz des Musters zurück
Übereinstimmungen Übereinstimmungen (CharSequence-Eingabe) Es wird verwendet, um einen Matcher zu erstellen, der die angegebene Eingabe mit dem Muster übereinstimmt
statische boolesche Übereinstimmungen (String-Regex, CharSequence-Eingabe) Es funktioniert als Kombination von Kompilierungs- und Matcher-Methoden. Es kompiliert den regulären Ausdruck und ordnet die angegebene Eingabe dem Muster zu
String [] split (CharSequence-Eingabe) Wird verwendet, um die angegebene Eingabezeichenfolge um Übereinstimmungen eines bestimmten Musters zu teilen
String pattern () Hilft, das Regex-Muster zurückzugeben

Nehmen wir nun ein kleines Beispiel, um zu verstehen, wie ein regulärer Ausdruck geschrieben wird.

import java.util.regex. * public class RegexExample {public statisch void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String entspricht dem angegebenen Regex - + matcher.matches ())}}

In diesem Fall werden intern Pattern und Matcher verwendet Regex-Klassen, um die Verarbeitung durchzuführen, aber offensichtlich,es reduziert die Codezeilen. Die Musterklasse enthält auch eine Übereinstimmungsmethode, die Regex und Eingabezeichenfolge als Argument verwendet und nach dem Abgleich ein boolesches Ergebnis zurückgibt. Der Code funktioniert also gut für die Zuordnung von Eingaben mit einem regulären Ausdruck in Java. Daher ist die Ausgabe wie unten gezeigt wahr.

Ausgabe:
wahr

Sehen wir uns nun einige weitere Kategorien von regulären Java-Ausdrücken an.

Regex-Zeichenklasse

Die folgende Tabelle zeigt die verschiedenen Zeichenklassenkombinationen.

ZeichenklasseBeschreibung
[ABC] a, b oder c (einfache Klasse)
[^ abc] Beliebiges Zeichen außer a, b oder c (Negation)
[a-zA-Z] a bis z oder A bis einschließlich Z (Bereich)
[a-d [m-p]] a bis d oder m bis p: [a-dm-p] (Vereinigung)
[a-z && [def]] d, e oder f (Schnittpunkt)
[a-z && [^ bc]] a bis z, außer b und c: [ad-z] (Subtraktion)
[a-z && [^ m-p]] a bis z und nicht m bis p: [a-lq-z] (Subtraktion)

Beispiel:

import java.util.regex. * public class CharacterExample {public statisch void main (String args []) {// false (nicht x oder y oder z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (zwischen x oder y oder z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x und y kommen mehr als einmal vor) System .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex-Quantifizierer

Die Quantifizierer geben die Anzahl der Vorkommen eines Zeichens an. Die folgende Tabelle zeigt verschiedene Quantifizierer.

RegexBeschreibung
X? X kommt einmal oder gar nicht vor
X + X kommt einmal oder mehrmals vor
X * X kommt null oder mehrmals vor
X {n} X kommt nur n-mal vor
X {n,} X kommt n oder mehrmals vor
X und Z} X tritt mindestens y-mal, aber weniger als z-mal auf

Beispiel:

import java.util.regex. * public class Beispiel {public static void main (String args []) {System.out.println ('? quantifier ....') // (a oder y oder z kommt einmal vor) System.out.println (Pattern.matches ('[ayz]?', 'A')) // Ausgabe: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay und z kommen mehrmals) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a kommt mehrmals) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // Ausgabe: false // (a oder y oder z müssen einmal kommen) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // Ausgabe: false System.out.println (' + Quantifizierer .... ') // (a oder y oder z einmal oder mehrmals) System.out.println (Muster .matches ('[ayz] +', 'a')) // Ausgabe: true // (a kommt mehr als einmal vor) System.out.println (Pattern.matches ('[ayz] +', 'aaa') )) // outpu: true // (a oder y oder z kommt mehrmals vor) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z und t stimmen nicht mit dem Muster überein) System.out.println (Pat. No. tern.matches ('[ayz] +', 'aammta')) // Ausgabe: false System.out.println ('* quantifier ....') // (a oder y oder z können null oder mehrmals vorkommen ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

So beenden Sie eine Methode in Java

Grundsätzlich wird nach dem passenden Quantifizierer gesucht und das Suchergebnis abgeglichen.

Regex Metazeichen

Die Metazeichen für reguläre Ausdrücke fungieren als Shortcodes. Schauen wir uns die folgende Tabelle an, um verschiedene Arten von Metazeichen zu verstehen.

RegexBeschreibung
. Es kann ein beliebiges Zeichen sein (kann mit dem Terminator übereinstimmen oder nicht)
d Repräsentiert alle Ziffern kurz vor [0-9]
D. Stellt eine beliebige nichtstellige Abkürzung für [^ 0-9] dar.
s Stellt ein beliebiges Leerzeichen dar, kurz für [tnx0Bfr]
S. Es kann ein Nicht-Leerzeichen sein, kurz für [^ s]
im Es kann ein Wortzeichen sein, kurz für [a-zA-Z_0-9]
IM Stellt ein beliebiges Nicht-Wort-Zeichen dar, kurz für [^ w]
b Stellt eine Wortgrenze dar
B. Es ist eine Nicht-Wort-Grenze

Beispiel:

import java.util.regex. * public class MetacharExample {public statisch void main (String args []) {// d bedeutet Ziffer System.out.println ('metacharacters d ....') // (nicht stellig) System.out.println (Pattern.matches ('d', 'abc')) // Ausgabe: false // (Ziffer und kommt einmal) System.out.println (Pattern.matches ('d', '1') ) // Ausgabe: true // (Ziffer kommt aber mehrmals vor) System.out.println (Pattern.matches ('d', '4443')) // Ausgabe: false // (Ziffer und Zeichen) System.out .println (Pattern.matches ('d', '323abc')) // Ausgabe: false // D bedeutet nicht-stelliges System.out.println ('Metazeichen D ....') // (nicht-stelliges aber kommt mehr als einmal) System.out.println (Pattern.matches ('D', 'abc')) // Ausgabe: false // Es ist eine Ziffer System.out.println (Pattern.matches ('D', '1 ')) // Ausgabe: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Ausgabe: false // (Ziffer und Zeichen) System.out.println (Pattern.matches (' D ',' 323abc ')) // Ausgabe: false // (nicht Ziffer und kommt einmal vor) System.out.println (Pattern.matches (' D ',' m ')) // Ausgabe: true System.out .pr intln ('Metazeichen D mit Quantifizierer ....') // (nicht-stellig und kann 0 oder mehrmals vorkommen) System.out.println (Pattern.matches ('D *', 'abc')) // Ausgabe : wahr } }

Basierend auf den oben genannten Bedingungen wird die Ausgabe angezeigt. So funktioniert das. Also, das war alles über verschiedene Arten von Regex. Damit kommen wir zum Ende dieses Artikels. ichIch hoffe, Sie fanden es informativ. Wenn Sie mehr erfahren möchten, können Sie unsere besuchen auch.

Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Wir sind hier, um Ihnen bei jedem Schritt auf Ihrer Reise zu helfen. Neben diesen Fragen zu Java-Interviews haben wir einen Lehrplan entwickelt, der für Studenten und Fachleute gedacht ist, die Java-Entwickler werden möchten.

Hast du eine Frage an uns? Bitte erwähnen Sie dies im Kommentarbereich dieses Artikels zu „Java Regex“. Wir werden uns so schnell wie möglich bei Ihnen melden.