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:
- Musterklasse
- Matcher-Klasse
- PatternSyntaxException-Klasse
- 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
- Wir erstellen ein Musterobjekt, indem wir Pattern.compile() aufrufen, es gibt keinen Konstruktor. compile() ist eine statische Methode in der Pattern-Klasse.
- Wie oben erstellen wir ein Matcher-Objekt mit matcher() für Objekte der Pattern-Klasse.
- Pattern.matches() ist ebenfalls eine statische Methode, mit der überprüft wird, ob ein bestimmter Text als Ganzes mit dem Muster übereinstimmt oder nicht.
- find() wird verwendet, um mehrere Vorkommen von Mustern im Text zu finden.
- 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'>));>>}>}>>>Ausgabetrue true true>