În Java, Regular Expressions sau Regex (pe scurt) în Java este un API pentru definirea modelelor de șiruri care pot fi utilizate pentru căutarea, manipularea și editarea unui șir în Java. Validarea e-mailului și parolele sunt câteva zone ale șirurilor în care Regex este utilizat pe scară largă pentru a defini constrângerile. Expresiile regulate în Java sunt furnizate sub java.util.regex pachet. Aceasta constă în 3 clase și 1 interfață . The java.util.regex pachetul constă în principal din următoarele trei clase, așa cum este prezentat mai jos, în format tabelar, după cum urmează:
Clasele și interfețele Regex
Regex în Java oferă 3 clase și 1 interfață care sunt după cum urmează:
- Clasa de modele
- Clasa de potriviri
- Clasa PatternSyntaxException
- Interfață MatchResult
Mai multă înțelegere poate fi interpretată din imaginea de mai jos, după cum urmează:
| Da nu. | Clasa/Interfata | Descriere |
|---|---|---|
| 1. | Clasa de modele | Folosit pentru definirea tiparelor |
| 2. | Clasa de potriviri | Folosit pentru a efectua operațiuni de potrivire pe text folosind modele |
| 3. | Clasa PatternSyntaxException | Folosit pentru a indica o eroare de sintaxă într-un model de expresie regulată |
| 4. | Interfață MatchResult | Folosit pentru reprezentarea rezultatului unei operații de potrivire |
Clasa de modele
Această clasă este o compilație de expresii regulate care pot fi utilizate pentru a defini diferite tipuri de modele, fără a oferi constructori publici. Aceasta poate fi creată prin invocarea metodei compile() care acceptă o expresie regulată ca prim argument, returnând astfel un model după execuție.
| Da nu. | Metodă | Descriere |
|---|---|---|
| 1. | compile(String regex) | Este folosit pentru a compila expresia regulată dată într-un model. |
| 2. | compile(String regex, int flags) | Este folosit pentru a compila expresia regulată dată într-un model cu steagurile date. |
| 3. | steaguri() | Este folosit pentru a returna steagurile de potrivire ale acestui model. |
| 4. | potrivire (intrare CharSequence) | Este folosit pentru a crea un potrivire care va potrivi intrarea dată cu acest model. |
| 5. | potriviri (String regex, intrare CharSequence) | Este folosit pentru a compila expresia regulată dată și încearcă să potrivească intrarea dată cu aceasta. |
| 6. | model() | Este folosit pentru a returna expresia regulată din care a fost compilat acest model. |
| 7. | citat (șir s) | Este folosit pentru a returna un model literal String pentru șirul specificat. |
| 8. | split (intrare CharSequence) | Este folosit pentru a împărți secvența de intrare dată în jurul potrivirilor acestui model. |
| 9. | split (intrare CharSequence, limită int) | Este folosit pentru a împărți secvența de intrare dată în jurul potrivirilor acestui model. Parametrul limită controlează de câte ori este aplicat modelul. |
| 10. | toString() | Este folosit pentru a returna reprezentarea în șir a acestui model. |
Exemplu: Clasa de modele
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'>));> >}> }> |
>
>Ieșire
true false>
Clasa de potriviri
Acest obiect este folosit pentru a efectua operații de potrivire pentru un șir de intrare în Java, interpretând astfel modelele explicate anterior. Acest lucru nu definește nici constructorii publici. Acest lucru poate fi implementat prin invocarea unui matchr() pe orice obiect model.
| Da nu. | Metodă | Descriere |
|---|---|---|
| 1. | găsi() | Este folosit în principal pentru căutarea mai multor apariții ale expresiilor regulate din text. |
| 2. | găsi (int start) | Este folosit pentru căutarea aparițiilor expresiilor regulate din text pornind de la indexul dat. |
| 3. | start() | Este folosit pentru a obține indexul de început al unei potriviri care este găsită folosind metoda find(). |
| 4. | Sfârşit() | Este folosit pentru obținerea indexului final al unei potriviri care este găsită folosind metoda find(). Returnează indexul caracterului de lângă ultimul caracter potrivit. |
| 5. | groupCount() | Este folosit pentru a găsi numărul total al subsecvenței potrivite. |
| 6. | grup() | Este folosit pentru a găsi subsecvența potrivită. |
| 7. | chibrituri() | Este folosit pentru a testa dacă expresia regulată se potrivește cu modelul. |
Notă: T Pattern.matches() verifică dacă întregul text se potrivește sau nu cu un model. Alte metode (demonstrate mai jos) sunt utilizate în principal pentru a găsi mai multe apariții de modele în text.
Să discutăm câteva exemple de programe așa cum am făcut pentru clasa Pattern. Aici vom discuta câteva programe Java care demonstrează funcționarea compile(), find(), start(), end() și split() pentru a obține o mai bună înțelegere a clasei Matcher.
Exemplul 1: Căutare de modele
Java
comutator dactilografiat
// 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> | Descriere |
|---|---|
| [xyz] | x,y sau z |
| [^xyz] | Orice alte caractere decât x,y sau z |
| [a-zA-Z] | caractere de la a la z sau de la A la Z. |
| [a-f[m-t]] | Unirea dintre a la f și m la t. |
| [a-z && p-y] | Toată gama de elemente se intersectează între două intervale |
| [a-z && [^bc]] | unirea de la a la z cu excepția b și c |
| [a-z && [^m-p]] | uniunea de la a la z cu excepția intervalului de la m la p |
Mai jos este implementarea subiectului de mai sus:
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'>));> >}> }> |
>
ls comandă Linux
>Ieșire
true false>
Metacaracterele Regex
| Regex | Descriere |
|---|---|
| X? | X apare o dată sau nu |
| X+ | X apare o dată sau de mai multe ori |
| X* | X apare zero sau nu apare o dată |
| X{n} | X apare de n ori |
| X{n,} | X apare de n ori sau mai mult de n |
| X{n,m} | X apare mai mare decât egal cu n ori și mai mic de m ori. |
Mai jos este implementarea Metacaracterelor Regex:
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'>));> >}> }> |
>
>Ieșire
false true false true>
Exemplu Java Regex Finder
| Regex | Descriere |
|---|---|
| . | Orice personaj |
| d | Orice cifre, [0-9] |
| D | Orice non-cifră, [^0-9] |
| s | Caracter de spațiu alb, [ x0Bf ] |
| S | Caracter fără spații albe, [^s] |
| În | Caracter cuvânt, [a-zA-Z_0-9] |
| ÎN | Caracter non-cuvânt, [^w] |
|
| Granița cuvântului |
| B | Limită non-cuvânt |
Mai jos este implementarea 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'>));> >}> }> |
>
>Ieșire
true false true true>
Concluzie
În cele din urmă, permiteți-ne să discutăm câteva dintre observațiile importante preluate din articolul de mai sus
- Creăm un obiect model apelând Pattern.compile(), nu există nici un constructor. compile() este o metodă statică din clasa Pattern.
- La fel ca mai sus, creăm un obiect Matcher folosind matchr() pe obiecte din clasa Pattern.
- Pattern.matches() este, de asemenea, o metodă statică care este folosită pentru a verifica dacă un anumit text în ansamblu se potrivește sau nu cu modelul.
- find() este folosit pentru a găsi mai multe apariții de modele în text.
- Putem împărți un text pe baza unui model de delimitare folosind metoda split().
Întrebări frecvente în Java Regex
Î1. Ce sunt expresiile regulate în Java?
Ani:
Expresiile regulate în java sunt folosite pentru modele de șir care pot fi folosite pentru căutarea, manipularea și editarea unui șir în Java.
Q2. Care este un exemplu simplu de expresie regulată în Java?
Ani:
Un exemplu simplu de expresie regulată în java este menționat mai jos:
Java
gimp ștergerea fundalului
// 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'>));>>}>}>>>Ieșiretrue true true>