logo

Reguläre Ausdrücke in Java

In Java sind reguläre Ausdrücke oder Regex (kurz) in Java eine API zum Definieren von String-Mustern, die zum Suchen, Bearbeiten und Bearbeiten eines Strings in Java verwendet werden können. E-Mail-Validierung und Passwörter sind einige Bereiche von Zeichenfolgen, in denen Regex häufig zum Definieren der Einschränkungen verwendet wird. Reguläre Ausdrücke in Java finden Sie unter java.util.regex Paket. Dies besteht aus 3 Klassen und 1 Schnittstelle . Der java.util.regex Das Paket besteht hauptsächlich aus den folgenden drei Klassen, wie unten im Tabellenformat dargestellt:

Regex-Klassen und -Schnittstellen

Regex in Java bietet 3 Klassen und 1 Schnittstelle, die wie folgt lauten:



  1. Musterklasse
  2. Matcher-Klasse
  3. PatternSyntaxException-Klasse
  4. MatchResult-Schnittstelle

Weiteres Verständnis lässt sich aus dem unten bereitgestellten Bild wie folgt interpretieren:

Ja Nein. Klasse/Schnittstelle Beschreibung
1. Musterklasse Wird zum Definieren von Mustern verwendet
2. Matcher-Klasse Wird zum Durchführen von Vergleichsoperationen für Text mithilfe von Mustern verwendet
3. PatternSyntaxException-Klasse Wird zur Anzeige von Syntaxfehlern in einem regulären Ausdrucksmuster verwendet
4. MatchResult-Schnittstelle Wird zur Darstellung des Ergebnisses einer Match-Operation verwendet

Musterklasse

Diese Klasse ist eine Zusammenstellung regulärer Ausdrücke, die zum Definieren verschiedener Mustertypen verwendet werden können und keine öffentlichen Konstruktoren bereitstellt. Dies kann durch Aufrufen der Methode „compile()“ erstellt werden, die einen regulären Ausdruck als erstes Argument akzeptiert und so nach der Ausführung ein Muster zurückgibt.



Ja Nein. Methode Beschreibung
1. kompilieren(String-Regex) Es wird verwendet, um den angegebenen regulären Ausdruck in ein Muster zu kompilieren.
2. kompilieren(String regex, int flags) Es wird verwendet, um den angegebenen regulären Ausdruck mit den angegebenen Flags in ein Muster zu kompilieren.
3. Flaggen() Es wird verwendet, um die Übereinstimmungsflags dieses Musters zurückzugeben.
4. matcher(CharSequence-Eingabe) Es wird verwendet, um einen Matcher zu erstellen, der die gegebene Eingabe mit diesem Muster abgleicht.
5. Übereinstimmungen (String-Regex, CharSequence-Eingabe) Es wird zum Kompilieren des angegebenen regulären Ausdrucks verwendet und versucht, die angegebene Eingabe damit abzugleichen.
6. Muster() Es wird verwendet, um den regulären Ausdruck zurückzugeben, aus dem dieses Muster kompiliert wurde.
7. quote(String s) Es wird verwendet, um einen Literalmuster-String für den angegebenen String zurückzugeben.
8. split(CharSequence-Eingabe) Es wird verwendet, um die gegebene Eingabesequenz um Übereinstimmungen dieses Musters aufzuteilen.
9. split(CharSequence-Eingabe, int-Limit) Es wird verwendet, um die gegebene Eingabesequenz um Übereinstimmungen dieses Musters aufzuteilen. Der Grenzwertparameter steuert die Häufigkeit, mit der das Muster angewendet wird.
10. toString() Es wird verwendet, um die Zeichenfolgendarstellung dieses Musters zurückzugeben.

Beispiel: Musterklasse

Java






Abfrageselektor

// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }>

>

>

Ausgabe

true false>

Matcher-Klasse

Dieses Objekt wird verwendet, um Übereinstimmungsoperationen für eine Eingabezeichenfolge in Java durchzuführen und so die zuvor erläuterten Muster zu interpretieren. Auch dies definiert keine öffentlichen Konstruktoren. Dies kann durch Aufrufen eines matcher() für ein beliebiges Musterobjekt implementiert werden.

Ja Nein. Methode Beschreibung
1. finden() Es wird hauptsächlich zum Suchen nach mehreren Vorkommen regulärer Ausdrücke im Text verwendet.
2. find(int start) Es wird zum Suchen nach Vorkommen regulärer Ausdrücke im Text ab dem angegebenen Index verwendet.
3. Start() Es wird verwendet, um den Startindex einer Übereinstimmung abzurufen, die mit der Methode find() gefunden wird.
4. Ende() Es wird verwendet, um den Endindex einer Übereinstimmung abzurufen, die mit der Methode find() gefunden wird. Es gibt den Index des Zeichens zurück, das dem letzten übereinstimmenden Zeichen folgt.
5. groupCount() Es wird verwendet, um die Gesamtzahl der übereinstimmenden Teilsequenzen zu ermitteln.
6. Gruppe() Es wird verwendet, um die passende Teilsequenz zu finden.
7. Streichhölzer() Es wird verwendet, um zu testen, ob der reguläre Ausdruck mit dem Muster übereinstimmt.

Notiz: T Pattern.matches() prüft, ob der gesamte Text mit einem Muster übereinstimmt oder nicht. Andere Methoden (unten gezeigt) werden hauptsächlich verwendet, um das mehrfache Vorkommen von Mustern im Text zu finden.

Lassen Sie uns einige Beispielprogramme besprechen, wie wir es für die Pattern-Klasse getan haben. Hier werden wir einige Java-Programme besprechen, die die Funktionsweise von Compile(), Find(), Start(), End() und Split() demonstrieren, um ein besseres Verständnis der Matcher-Klasse zu erhalten.

Beispiel 1: Mustersuche

Java




ReactJS-Karte
// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com>

Beschreibung

[xyz]

x,y oder z

[^xyz]

Alle anderen Zeichen als x, y oder z

[a-zA-Z]

Zeichen aus dem Bereich a bis z oder A bis Z.

[a-f[m-t]]

Vereinigung von a mit f und m mit t.

[a-z && p-y]

Der gesamte Bereich von Elementen, die sich zwischen zwei Bereichen überschneiden

[a-z && [^bc]]

Vereinigung von a bis z mit Ausnahme von b und c

[a-z && [^m-p]]

a bis z-Vereinigung mit Ausnahme des Bereichs m bis p

Nachfolgend finden Sie die Umsetzung des oben genannten Themas:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }>

>

>

Ausgabe

true false>

Regex-Metazeichen

Regex

Beschreibung

X?

X erscheint einmal oder nicht

X+

X kommt einmal oder mehrmals vor

X*

X erscheint null oder nicht ein einziges Mal

X{n}

X erscheint n-mal

X{n,}

Vergleiche String Java
X erscheint n-mal oder öfter als n

X{n,m}

X erscheint n-mal größer als gleich und m-mal kleiner.

Unten ist die Implementierung von Regex-Metazeichen:

Java




// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }>

>

>

Ausgabe

false true false true>

Beispiel für einen Java-Regex-Finder

Regex

Beschreibung

.

Jeder Charakter

D

Beliebige Ziffern, [0-9]

D

Alle Nicht-Ziffern, [^0-9]

S

Leerzeichen, [ x0Bf ]

S

Nicht-Leerzeichen, [^s]

In

Wortzeichen, [a-zA-Z_0-9]

IN

Nicht-Wort-Zeichen, [^w]

B

Wortgrenze

B

Nicht-Wortgrenze

Nachfolgend finden Sie die Implementierung des Java Regex Finder:

Java

Java-Softwaremuster




// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

Zeichenfolge in C++

>

Ausgabe

true false true true>

Abschluss

Lassen Sie uns abschließend einige der wichtigen Beobachtungen diskutieren, die aus dem obigen Artikel hervorgehen

  1. Wir erstellen ein Musterobjekt, indem wir Pattern.compile() aufrufen, es gibt keinen Konstruktor. compile() ist eine statische Methode in der Pattern-Klasse.
  2. Wie oben erstellen wir ein Matcher-Objekt mit matcher() für Objekte der Pattern-Klasse.
  3. Pattern.matches() ist ebenfalls eine statische Methode, mit der überprüft wird, ob ein bestimmter Text als Ganzes mit dem Muster übereinstimmt oder nicht.
  4. find() wird verwendet, um mehrere Vorkommen von Mustern im Text zu finden.
  5. Mit der Methode split() können wir einen Text anhand eines Trennzeichenmusters aufteilen

FAQs in Java Regex

Q1. Was sind reguläre Ausdrücke in Java?

Jahre:

Reguläre Ausdrücke in Java werden für Zeichenfolgenmuster verwendet, die zum Suchen, Bearbeiten und Bearbeiten einer Zeichenfolge in Java verwendet werden können.

Q2. Was ist ein einfaches Beispiel für einen regulären Ausdruck in Java?

Jahre:

Ein einfaches Beispiel für einen regulären Ausdruck in Java ist unten aufgeführt:

Java




// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }>

>

>

Ausgabe

true true true>