In Java is Reguliere Expressies of Regex (kortweg) in Java een API voor het definiëren van String-patronen die kunnen worden gebruikt voor het zoeken, manipuleren en bewerken van een string in Java. E-mailvalidatie en wachtwoorden zijn enkele gebieden van strings waar Regex op grote schaal wordt gebruikt om de beperkingen te definiëren. Reguliere expressies in Java vindt u onder java.util.regex pakket. Deze bestaat uit 3 klassen en 1 interface . De java.util.regex pakket bestaat voornamelijk uit de volgende drie klassen, zoals hieronder in tabelvorm als volgt weergegeven:
Regex-klassen en interfaces
Regex in Java biedt 3 klassen en 1 interface, die als volgt zijn:
- Patroonklasse
- Matcher-klasse
- PatternSyntaxException-klasse
- MatchResult-interface
Meer begrip kan als volgt worden geïnterpreteerd uit de onderstaande afbeelding:
| Ja nee. | Klasse/interface | Beschrijving |
|---|---|---|
| 1. | Patroonklasse | Wordt gebruikt voor het definiëren van patronen |
| 2. | Matcher-klasse | Wordt gebruikt voor het uitvoeren van matchbewerkingen op tekst met behulp van patronen |
| 3. | PatternSyntaxException-klasse | Wordt gebruikt voor het aangeven van een syntaxisfout in een reguliere-expressiepatroon |
| 4. | MatchResult-interface | Wordt gebruikt voor het weergeven van het resultaat van een matchbewerking |
Patroonklasse
Deze klasse is een compilatie van reguliere expressies die kunnen worden gebruikt om verschillende soorten patronen te definiëren, zonder dat er openbare constructors beschikbaar zijn. Dit kan worden gemaakt door de methode compile() aan te roepen die een reguliere expressie als eerste argument accepteert, waardoor na uitvoering een patroon wordt geretourneerd.
| Ja nee. | Methode | Beschrijving |
|---|---|---|
| 1. | compileren(tekenreeksregex) | Het wordt gebruikt om de gegeven reguliere expressie in een patroon te compileren. |
| 2. | compileren(String regex, int vlaggen) | Het wordt gebruikt om de gegeven reguliere expressie te compileren tot een patroon met de gegeven vlaggen. |
| 3. | vlaggen() | Het wordt gebruikt om de wedstrijdvlaggen van dit patroon terug te geven. |
| 4. | matcher (CharSequence-invoer) | Het wordt gebruikt om een matcher te maken die de gegeven invoer met dit patroon vergelijkt. |
| 5. | komt overeen met (String regex, CharSequence-invoer) | Het wordt gebruikt om de gegeven reguliere expressie te compileren en probeert de gegeven invoer ermee te matchen. |
| 6. | patroon() | Het wordt gebruikt om de reguliere expressie te retourneren waaruit dit patroon is samengesteld. |
| 7. | citaat(String s) | Het wordt gebruikt om een letterlijke patroontekenreeks voor de opgegeven tekenreeks terug te geven. |
| 8. | splitsen (CharSequence-invoer) | Het wordt gebruikt om de gegeven invoerreeks te splitsen rond overeenkomsten van dit patroon. |
| 9. | split(CharSequence-invoer, int-limiet) | Het wordt gebruikt om de gegeven invoerreeks te splitsen rond overeenkomsten van dit patroon. De limietparameter bepaalt het aantal keren dat het patroon wordt toegepast. |
| 10. | toString() | Het wordt gebruikt om de tekenreeksrepresentatie van dit patroon terug te geven. |
Voorbeeld: Patroon klasse
Java
// 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'>));> >}> }> |
>
>Uitvoer
true false>
Matcher-klasse
Dit object wordt gebruikt om matchbewerkingen uit te voeren voor een invoerreeks in Java, waardoor de eerder uitgelegde patronen worden geïnterpreteerd. Ook dit definieert geen publieke constructeurs. Dit kan worden geïmplementeerd door een matcher() op elk patroonobject aan te roepen.
| Ja nee. | Methode | Beschrijving |
|---|---|---|
| 1. | vinden() | Het wordt voornamelijk gebruikt voor het zoeken naar meerdere exemplaren van de reguliere expressies in de tekst. |
| 2. | vind(int begin) | Het wordt gebruikt voor het zoeken naar exemplaren van de reguliere expressies in de tekst, beginnend bij de gegeven index. |
| 3. | begin() | Het wordt gebruikt voor het verkrijgen van de startindex van een overeenkomst die wordt gevonden met behulp van de find()-methode. |
| 4. | einde() | Het wordt gebruikt voor het verkrijgen van de eindindex van een overeenkomst die wordt gevonden met behulp van de find()-methode. Het retourneert de index van het teken naast het laatste overeenkomende teken. |
| 5. | groepAantal() | Het wordt gebruikt om het totale aantal van de overeenkomende deelreeks te vinden. |
| 6. | groep() | Het wordt gebruikt om de overeenkomende deelreeks te vinden. |
| 7. | wedstrijden() | Het wordt gebruikt om te testen of de reguliere expressie overeenkomt met het patroon. |
Opmerking: T Pattern.matches() controleert of de hele tekst overeenkomt met een patroon of niet. Andere methoden (hieronder gedemonstreerd) worden voornamelijk gebruikt om meerdere keren voorkomen van patronen in de tekst te vinden.
Laten we een paar voorbeeldprogramma's bespreken, zoals we deden voor de klasse Pattern. Hier zullen we enkele Java-programma's bespreken die de werking van compile(), find(), start(), end() en split() demonstreren om een beter begrip van de Matcher-klasse te krijgen.
Voorbeeld 1: Patroon zoeken
Java
concat java-reeks
// 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> | Beschrijving |
|---|---|
| [xyz] | x,y of z |
| [^xyz] | Alle andere tekens dan x,y of z |
| [a-zA-Z] | tekens van bereik a tot z of A tot Z. |
| [a-f[m-t]] | Vereniging van a tot f en m tot t. |
| [a-z && p-y] | Het hele bereik van elementen kruist twee bereiken |
| [a-z && [^bc]] | a tot z vereniging met behalve b en c |
| [a-z && [^m-p]] | a tot z vereniging met uitzondering van bereik m tot p |
Hieronder vindt u de implementatie van het bovenstaande onderwerp:
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'>));> >}> }> |
>
>Uitvoer
true false>
Regex-metatekens
| Regex | Beschrijving |
|---|---|
| X? | X verschijnt één keer of niet |
| X+ | X komt één of meerdere keren voor |
| X* | X verschijnt nul of niet één keer |
| X{n} | X komt n keer voor |
| X{n,} | X komt n keer of meer dan n voor |
| X{n,m} | X lijkt groter dan gelijk aan n keer en kleiner dan m keer. |
Hieronder vindt u de implementatie van Regex Metacharacters:
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'>));> >}> }> |
>
>Uitvoer
false true false true>
Voorbeeld van Java Regex Finder
| Regex | Beschrijving |
|---|---|
| . | Elk karakter |
| D | Eventuele cijfers, [0-9] |
| D | Elk niet-cijferig getal, [^0-9] |
| S | Witruimteteken, [ x0Bf ] |
| S | Niet-witruimteteken, [^s] |
| In | Woordteken, [a-zA-Z_0-9] |
| IN | Niet-woordteken, [^w] |
| B | Woordgrens |
| B | Niet-woordgrens |
Hieronder vindt u de implementatie van de Java Regex Finder:
Java
// 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'>));> >}> }> |
>
>Uitvoer
true false true true>
Conclusie
Laten we tot slot enkele van de belangrijke observaties uit het bovenstaande artikel bespreken
- We maken een patroonobject door Pattern.compile() aan te roepen, er is geen constructor. compile() is een statische methode in de klasse Pattern.
- Net als hierboven maken we een Matcher-object met behulp van matcher() op objecten van de Pattern-klasse.
- Pattern.matches() is ook een statische methode die wordt gebruikt om te controleren of een bepaalde tekst als geheel overeenkomt met het patroon of niet.
- find() wordt gebruikt om meerdere exemplaren van patronen in de tekst te vinden.
- We kunnen een tekst splitsen op basis van een scheidingstekenpatroon met behulp van de split()-methode
Veelgestelde vragen over Java Regex
Q1. Wat zijn reguliere expressies in Java?
Jaren:
Reguliere expressies in Java worden gebruikt voor tekenreekspatronen die kunnen worden gebruikt voor het zoeken, manipuleren en bewerken van een tekenreeks in Java.
Vraag 2. Wat is een eenvoudig voorbeeld van reguliere expressie in Java?
Jaren:
Een eenvoudig voorbeeld van een reguliere expressie in Java wordt hieronder vermeld:
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'>));>>}>}>>>Uitvoertrue true true>