V Javi so Regular Expressions ali Regex (na kratko) v Javi API za definiranje vzorcev nizov, ki se lahko uporabljajo za iskanje, manipulacijo in urejanje niza v Javi. Preverjanje veljavnosti e-pošte in gesel je nekaj področij nizov, kjer se Regex pogosto uporablja za določanje omejitev. Regularni izrazi v Javi so navedeni pod java.util.regex paket. To je sestavljeno iz 3 razredi in 1 vmesnik . The java.util.regex Paket je sestavljen predvsem iz naslednjih treh razredov, kot je prikazano spodaj v obliki tabele, kot sledi:
Regex razredi in vmesniki
Regex v Javi ponuja 3 razrede in 1 vmesnik, ki so naslednji:
- Razred vzorca
- Matcher razred
- Razred PatternSyntaxException
- Vmesnik MatchResult
Več razumevanja si lahko razlagate iz spodnje slike, kot sledi:
| da ne | Razred/vmesnik | Opis |
|---|---|---|
| 1. | Razred vzorca | Uporablja se za določanje vzorcev |
| 2. | Matcher razred | Uporablja se za izvajanje operacij ujemanja z besedilom z uporabo vzorcev |
| 3. | Razred PatternSyntaxException | Uporablja se za označevanje sintaksne napake v vzorcu regularnega izraza |
| 4. | Vmesnik MatchResult | Uporablja se za predstavitev rezultata operacije ujemanja |
Razred vzorca
Ta razred je zbirka regularnih izrazov, ki se lahko uporabljajo za definiranje različnih vrst vzorcev, brez javnih konstruktorjev. To je mogoče ustvariti s klicem metode compile(), ki sprejme regularni izraz kot prvi argument in tako po izvedbi vrne vzorec.
| da ne | Metoda | Opis |
|---|---|---|
| 1. | prevedi (redni izraz niza) | Uporablja se za prevajanje danega regularnega izraza v vzorec. |
| 2. | prevedi (redni izraz niza, zastavice int) | Uporablja se za prevajanje danega regularnega izraza v vzorec z danimi zastavicami. |
| 3. | zastavice() | Uporablja se za vrnitev zastavic ujemanja tega vzorca. |
| 4. | ujemanje (vnos CharSequence) | Uporablja se za ustvarjanje ujemalnika, ki bo ujemal dani vnos s tem vzorcem. |
| 5. | ujema se (redni izraz niza, vnos CharSequence) | Uporablja se za prevajanje danega regularnega izraza in poskuša ujemati dani vnos z njim. |
| 6. | vzorec () | Uporablja se za vrnitev regularnega izraza, iz katerega je bil preveden ta vzorec. |
| 7. | citat (niz s) | Uporablja se za vrnitev dobesednega vzorca String za navedeni niz. |
| 8. | razdeli (vnos CharSequence) | Uporablja se za razdelitev danega vhodnega zaporedja okoli ujemanj tega vzorca. |
| 9. | split(vnos CharSequence, int limit) | Uporablja se za razdelitev danega vhodnega zaporedja okoli ujemanj tega vzorca. Parameter limit nadzoruje, kolikokrat je vzorec uporabljen. |
| 10. | toString() | Uporablja se za vrnitev nizovne predstavitve tega vzorca. |
primer: Razred vzorca
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'>));> >}> }> |
>
>Izhod
true false>
Matcher razred
Ta objekt se uporablja za izvajanje operacij ujemanja za vhodni niz v Javi in tako interpretira prej razložene vzorce. Tudi to ne opredeljuje javnih konstruktorjev. To je mogoče implementirati s klicem matcher() na kateri koli objekt vzorca.
| da ne | Metoda | Opis |
|---|---|---|
| 1. | najti() | Uporablja se predvsem za iskanje več pojavitev regularnih izrazov v besedilu. |
| 2. | najdi (int začetek) | Uporablja se za iskanje pojavitev regularnih izrazov v besedilu, začenši z danim indeksom. |
| 3. | začetek() | Uporablja se za pridobivanje začetnega indeksa ujemanja, ki se najde z metodo find(). |
| 4. | konec () | Uporablja se za pridobitev končnega indeksa ujemanja, ki se najde z metodo find(). Vrne indeks znaka poleg zadnjega ujemajočega se znaka. |
| 5. | groupCount() | Uporablja se za iskanje skupnega števila ujemajočega se podzaporedja. |
| 6. | skupina() | Uporablja se za iskanje ujemajočega se podzaporedja. |
| 7. | ujema se() | Uporablja se za preverjanje, ali se regularni izraz ujema z vzorcem. |
Opomba: T Pattern.matches() preveri, ali se celotno besedilo ujema z vzorcem ali ne. Druge metode (prikazane spodaj) se večinoma uporabljajo za iskanje večkratnih pojavov vzorcev v besedilu.
Razpravljajmo o nekaj vzorčnih programih, kot smo to storili za razred Pattern. Tukaj bomo razpravljali o nekaj programih Java, ki prikazujejo delovanje compile(), find(), start(), end() in split(), da bi bolje razumeli razred Matcher.
Primer 1: Iskanje vzorcev
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> | Opis |
|---|---|
| [xyz] | x,y ali z |
| [^xyz] | Vsi znaki razen x, y ali z |
| [a-zA-Z] | znakov od obsega od a do z ali od A do Ž. |
| [a-f[m-t]] | Zveza a na f in m na t. |
| [a-z && p-y] | Celotno območje elementov seka med dvema območjema |
| [a-z && [^bc]] | a do z zveza z razen b in c |
| [a-z && [^m-p]] | a do z zveza z razen obsega m do p |
Spodaj je izvedba zgornje teme:
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'>));> >}> }> |
>
>Izhod
true false>
Metaznaki regularnih izrazov
| Regex | Opis java skener naslednji |
|---|---|
| X? | X se pojavi enkrat ali ne |
| X+ | X se pojavi enkrat ali večkrat |
| X* | X se prikaže nič ali niti enkrat |
| X{n} | X se pojavi n-krat |
| X{n,} | X se pojavi n-krat ali več kot n |
| X{n,m} | X je n-krat večji kot enak in m-krat manjši. |
Spodaj je implementacija metaznakov regularnih izrazov:
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'>));> >}> }> |
>
>Izhod
false true false true>
Primer iskalnika regularnih izrazov Java
| Regex | Opis |
|---|---|
| . | Kateri koli lik |
| d | Poljubne števke, [0-9] |
| D | Vse, kar ni številka, [^0-9] |
| s | Presledek, [ x0Bf ] |
| S | Znak, ki ni presledek, [^s] |
| In | Besedni znak, [a-zA-Z_0-9] |
| IN | Nebesedni znak, [^w] |
|
| Besedna meja |
| B | Brezbesedna meja |
Spodaj je implementacija 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'>));> >}> }> |
>
>Izhod
true false true true>
Zaključek
Nazadnje, razpravljajmo o nekaterih pomembnih opažanjih, pridobljenih iz zgornjega članka
pretvori niz v int v javi
- Objekt vzorca ustvarimo s klicem Pattern.compile(), konstruktorja ni. compile() je statična metoda v razredu Pattern.
- Tako kot zgoraj ustvarimo objekt Matcher z uporabo matcher() na objektih razreda Pattern.
- Pattern.matches() je tudi statična metoda, ki se uporablja za preverjanje, ali se dano besedilo kot celota ujema z vzorcem ali ne.
- find() se uporablja za iskanje več pojavitev vzorcev v besedilu.
- Besedilo lahko razdelimo na podlagi vzorca ločila z metodo split().
Pogosta vprašanja v Java Regex
Q1. Kaj so regularni izrazi v Javi?
leta:
Regularni izrazi v Javi se uporabljajo za vzorce nizov, ki se lahko uporabljajo za iskanje, manipulacijo in urejanje niza v Javi.
Q2. Kaj je preprost primer regularnega izraza v Javi?
leta:
Spodaj je omenjen preprost primer regularnega izraza v Javi:
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'>));>>}>}>>>Izhodtrue true true>