A Java, Expressions regulars o Regex (en resum) a Java és una API per definir patrons de cadena que es poden utilitzar per cercar, manipular i editar una cadena a Java. La validació de correu electrònic i les contrasenyes són algunes àrees de cadenes on Regex s'utilitza àmpliament per definir les restriccions. Les expressions regulars en Java es proporcionen a sota java.util.regex paquet. Això consisteix en 3 classes i 1 interfície . El java.util.regex El paquet consta principalment de les tres classes següents, tal com es mostra a continuació en format tabular de la següent manera:
Classes i interfícies de regex
Regex a Java proporciona 3 classes i 1 interfície que són les següents:
- Classe de patró
- Classe Matcher
- Classe PatternSyntaxException
- Interfície MatchResult
Es pot interpretar més comprensió a partir de la imatge que es proporciona a continuació de la següent manera:
| S. No. | Classe/Interfície | Descripció |
|---|---|---|
| 1. | Classe de patró | S'utilitza per definir patrons |
| 2. | Classe Matcher | S'utilitza per realitzar operacions de concordança en text mitjançant patrons |
| 3. | Classe PatternSyntaxException | S'utilitza per indicar un error de sintaxi en un patró d'expressió regular |
| 4. | Interfície MatchResult | S'utilitza per representar el resultat d'una operació de concordança |
Classe de patró
Aquesta classe és una compilació d'expressions regulars que es poden utilitzar per definir diversos tipus de patrons, sense proporcionar constructors públics. Això es pot crear invocant el mètode compile() que accepta una expressió regular com a primer argument, retornant així un patró després de l'execució.
convertir la cadena en nombre enter
| S. No. | Mètode | Descripció |
|---|---|---|
| 1. | compilar(String regex) | S'utilitza per compilar l'expressió regular donada en un patró. |
| 2. | compile(String regex, int flags) | S'utilitza per compilar l'expressió regular donada en un patró amb els indicadors donats. |
| 3. | banderes () | S'utilitza per tornar les banderes de coincidència d'aquest patró. |
| 4. | matcher (entrada de CharSequence) | S'utilitza per crear un comparador que coincideixi amb l'entrada donada amb aquest patró. |
| 5. | coincideix (String regex, entrada CharSequence) | S'utilitza per compilar l'expressió regular donada i intenta fer coincidir l'entrada donada amb ella. |
| 6. | patró () | S'utilitza per retornar l'expressió regular a partir de la qual es va compilar aquest patró. |
| 7. | cita (cadena s) | S'utilitza per retornar una cadena de patró literal per a la cadena especificada. |
| 8. | split (entrada de CharSequence) | S'utilitza per dividir la seqüència d'entrada donada al voltant de coincidències d'aquest patró. |
| 9. | split (entrada de CharSequence, límit int) | S'utilitza per dividir la seqüència d'entrada donada al voltant de coincidències d'aquest patró. El paràmetre de límit controla el nombre de vegades que s'aplica el patró. |
| 10. | toString() | S'utilitza per retornar la representació de cadena d'aquest patró. |
Exemple: Classe de patró
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'>));> >}> }> |
>
>Sortida
true false>
Classe de Match
Aquest objecte s'utilitza per realitzar operacions de concordança per a una cadena d'entrada a Java, interpretant així els patrons explicats anteriorment. Això tampoc defineix cap constructor públic. Això es pot implementar invocant un matchr() a qualsevol objecte de patró.
| S. No. | Mètode | Descripció |
|---|---|---|
| 1. | trobar () | S'utilitza principalment per cercar múltiples ocurrències de les expressions regulars al text. |
| 2. | trobar (inici int) | S'utilitza per cercar ocurrències de les expressions regulars al text a partir de l'índex donat. |
| 3. | començar() | S'utilitza per obtenir l'índex inicial d'una coincidència que s'està trobant mitjançant el mètode find(). |
| 4. | final() | S'utilitza per obtenir l'índex final d'una coincidència que s'està trobant mitjançant el mètode find(). Retorna l'índex del caràcter al costat de l'últim caràcter coincident. |
| 5. | groupCount() | S'utilitza per trobar el nombre total de la subseqüència coincident. |
| 6. | grup () | S'utilitza per trobar la subseqüència coincident. |
| 7. | coincidències () | S'utilitza per comprovar si l'expressió regular coincideix amb el patró. |
Nota: T Pattern.matches() comprova si tot el text coincideix amb un patró o no. Altres mètodes (que es mostren a continuació) s'utilitzen principalment per trobar múltiples ocurrències de patrons al text.
Parlem d'alguns programes d'exemple com vam fer per a la classe de Patró. Aquí parlarem d'uns quants programes Java que demostren el funcionament de compile(), find(), start(), end() i split() per tal d'entendre millor la classe Matcher.
Exemple 1: Cerca de patrons
Java
// 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> | Descripció |
|---|---|
| [xyz] | x,y o z |
| [^xyz] | Qualsevol caràcter que no sigui x,y o z |
| [a-zA-Z] | caràcters de la a a la z o de la A a la Z. |
| [a-f[m-t]] | Unió de a a f i de m a t. |
| [a-z && p-y] | Tot el rang d'elements es creua entre dos rangs |
| [a-z && [^bc]] | unió de a a z amb excepte b i c |
| [a-z && [^m-p]] | unió de a a z amb excepte rang m a p |
A continuació es mostra la implementació del tema anterior:
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'>));> >}> }> |
>
>Sortida
true false>
Metacaracters de regex
| Regex | Descripció |
|---|---|
| X? | X apareix una vegada o no |
| X+ | X apareix una vegada o més d'una vegada |
| X* | X apareix zero o no apareix una vegada |
| X{n} | X apareix n vegades |
| X{n,} | X apareix n vegades o més que n |
| X{n,m} | X apareix més gran que igual a n vegades i menor que m vegades. |
A continuació es mostra la implementació de metacaracters d'expressió regular:
Java
rotació de l'arbre avl
// 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'>));> >}> }> |
>
>Sortida
false true false true>
Exemple de Java Regex Finder
| Regex | Descripció |
|---|---|
| . | Qualsevol personatge |
| d | Qualsevol dígit, [0-9] |
| D | Qualsevol que no sigui dígit, [^0-9] |
| s | Caràcter espai en blanc, [ x0Bf ] |
| S | Caràcter que no és espai en blanc, [^s] |
| En | Caràcter de paraula, [a-zA-Z_0-9] |
| IN | Caràcter no verbal, [^w] |
|
| Límit de la paraula |
| B | Límit no de paraula |
A continuació es mostra la implementació 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'>));> >}> }> |
>
>Sortida
true false true true>
Conclusió
Finalment, anem a discutir algunes de les observacions importants recuperades de l'article anterior
- Creem un objecte patró cridant a Pattern.compile(), no hi ha constructor. compile() és un mètode estàtic de la classe Pattern.
- Com a dalt, creem un objecte Matcher utilitzant matchr() en objectes de la classe Pattern.
- Pattern.matches() també és un mètode estàtic que s'utilitza per comprovar si un text determinat en conjunt coincideix amb el patró o no.
- find() s'utilitza per trobar múltiples ocurrències de patrons al text.
- Podem dividir un text basant-nos en un patró delimitador mitjançant el mètode split().
Preguntes freqüents a Java Regex
Q1. Què són les expressions regulars a Java?
Anys:
Les expressions regulars en Java s'utilitzen per a patrons de cadena que es poden utilitzar per cercar, manipular i editar una cadena en Java.
P2. Quin és un exemple senzill d'expressió regular a Java?
Anys:
A continuació s'esmenta un exemple senzill d'expressió regular en Java:
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'>));>>}>}>>>Sortidatrue true true>