logo

Regularni izrazi v Javi

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:



  1. Razred vzorca
  2. Matcher razred
  3. Razred PatternSyntaxException
  4. 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
  1. Objekt vzorca ustvarimo s klicem Pattern.compile(), konstruktorja ni. compile() je statična metoda v razredu Pattern.
  2. Tako kot zgoraj ustvarimo objekt Matcher z uporabo matcher() na objektih razreda Pattern.
  3. Pattern.matches() je tudi statična metoda, ki se uporablja za preverjanje, ali se dano besedilo kot celota ujema z vzorcem ali ne.
  4. find() se uporablja za iskanje več pojavitev vzorcev v besedilu.
  5. 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'>));> >}> }>

>

>

Izhod

true true true>