logo

Regulære udtryk i Java

I Java er Regular Expressions eller Regex (kort sagt) i Java en API til at definere strengmønstre, der kan bruges til at søge, manipulere og redigere en streng i Java. E-mail-validering og adgangskoder er nogle få områder af strenge, hvor Regex er meget brugt til at definere begrænsningerne. Regulære udtryk i Java findes under java.util.regex pakke. Dette består af 3 klasser og 1 interface . Det java.util.regex pakken består primært af følgende tre klasser som afbildet nedenfor i tabelformat som følger:

Regex-klasser og grænseflader

Regex i Java giver 3 klasser og 1 interface, som er som følger:



  1. Mønsterklasse
  2. Matcher klasse
  3. PatternSyntaxException Class
  4. MatchResult Interface

Mere forståelse kan fortolkes fra billedet nedenfor som følger:

Ja Nej. Klasse/grænseflade Beskrivelse
1. Mønsterklasse Bruges til at definere mønstre
2. Matcher klasse Bruges til at udføre matchoperationer på tekst ved hjælp af mønstre
3. PatternSyntaxException Class Bruges til at angive syntaksfejl i et regulært udtryksmønster
4. MatchResult Interface Bruges til at repræsentere resultatet af en kampoperation

Mønsterklasse

Denne klasse er en samling af regulære udtryk, der kan bruges til at definere forskellige typer af mønstre, uden at give offentlige konstruktører. Dette kan oprettes ved at påkalde compile()-metoden, som accepterer et regulært udtryk som det første argument, og dermed returnerer et mønster efter udførelse.



java til loop
Ja Nej. Metode Beskrivelse
1. kompiler (regex streng) Det bruges til at kompilere det givne regulære udtryk til et mønster.
2. kompiler (regex streng, int flag) Det bruges til at kompilere det givne regulære udtryk til et mønster med de givne flag.
3. flag() Det bruges til at returnere dette mønsters matchflag.
4. matcher (CharSequence input) Det bruges til at oprette en matcher, der matcher det givne input mod dette mønster.
5. matches (String regex, CharSequence input) Det bruges til at kompilere det givne regulære udtryk og forsøger at matche det givne input mod det.
6. mønster() Det bruges til at returnere det regulære udtryk, hvorfra dette mønster blev kompileret.
7. citat (streng s) Det bruges til at returnere en bogstavelig mønsterstreng for den angivne streng.
8. split (CharSequence input) Den bruges til at opdele den givne inputsekvens omkring matcher af dette mønster.
9. split (CharSequence input, int limit) Den bruges til at opdele den givne inputsekvens omkring matcher af dette mønster. Grænseparameteren styrer antallet af gange, mønsteret påføres.
10. toString() Det bruges til at returnere strengrepræsentationen af ​​dette mønster.

Eksempel: Mønster 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'>));> >}> }>

>

>

Produktion

true false>

Matcher klasse

Dette objekt bruges til at udføre match-operationer for en inputstreng i Java og dermed fortolke de tidligere forklarede mønstre. Dette definerer heller ingen offentlige konstruktører. Dette kan implementeres ved at kalde en matcher() på et hvilket som helst mønsterobjekt.

Ja Nej. Metode Beskrivelse
1. Find() Det bruges hovedsageligt til at søge i flere forekomster af de regulære udtryk i teksten.
2. find (int start) Det bruges til at søge efter forekomster af regulære udtryk i teksten med udgangspunkt i det givne indeks.
3. Start() Det bruges til at få startindekset for et match, der bliver fundet ved hjælp af find() metoden.
4. ende() Det bruges til at få slutindekset for et match, der bliver fundet ved hjælp af find()-metoden. Det returnerer indekset for tegnet ved siden af ​​det sidste matchende tegn.
5. groupCount() Det bruges til at finde det samlede antal af den matchede undersekvens.
6. gruppe() Det bruges til at finde den matchede undersekvens.
7. Tændstikker() Det bruges til at teste, om det regulære udtryk matcher mønsteret.

Bemærk: T Pattern.matches() kontrollerer, om hele teksten stemmer overens med et mønster eller ej. Andre metoder (demonstreret nedenfor) bruges hovedsageligt til at finde flere forekomster af mønstre i teksten.

Lad os diskutere et par eksempler på programmer, som vi gjorde for mønsterklassen. Her vil vi diskutere nogle få Java-programmer, der demonstrerer, hvordan compile(), find(), start(), end() og split() fungerer for at få en bedre forståelse af Matcher-klassen.

Eksempel 1: Mønstersøgning

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>

Beskrivelse

[xyz]

x, y eller z

[^xyz]

Andre tegn end x, y eller z

[a-zA-Z]

"hvad er 10 af 100"
tegn fra område a til z eller A til Z.

[a-f[m-t]]

Sammenslutning af a til f og m til t.

[a-z && p-y]

Hele rækken af ​​elementer skærer sig mellem to områder

[a-z && [^bc]]

a til z forening med undtagen b og c

[a-z && [^m-p]]

a til z forening med undtagen rækkevidde m til p

Nedenfor er implementeringen af ​​ovenstående emne:

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'>));> >}> }>

>

>

Produktion

true false>

Regex metakarakterer

Regex

Beskrivelse

X?

X vises én gang eller ej

X+

X vises én gang eller mere end én gang

X*

X vises nul eller ikke én gang

X{n}

X vises n gange

X{n,}

X vises n gange eller mere end n

X{n,m}

X er større end lig med n gange og mindre end m gange.

Nedenfor er implementeringen af ​​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'>));> >}> }>

>

>

Produktion

false true false true>

Eksempel på Java Regex Finder

Regex

Beskrivelse

.

Enhver karakter

d

Alle cifre, [0-9]

D

Alle ikke-cifre, [^0-9]

s

Mellemrumstegn, [ x0Bf ]

S

Ikke-mellemrum, [^s]

I

Ordtegn, [a-zA-Z_0-9]

I

Ikke-ord-tegn, [^w]



Ordgrænse

B

hvad er dvale
Ikke-ord grænse

Nedenfor er implementeringen af ​​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'>));> >}> }>

>

>

Produktion

true false true true>

Konklusion

Lad os endelig diskutere nogle af de vigtige observationer, som er hentet fra ovenstående artikel

  1. Vi opretter et mønsterobjekt ved at kalde Pattern.compile(), der er ingen konstruktør. compile() er en statisk metode i Pattern-klassen.
  2. Som ovenfor opretter vi et Matcher-objekt ved hjælp af matcher() på objekter i Pattern-klassen.
  3. Pattern.matches() er også en statisk metode, der bruges til at kontrollere, om en given tekst som helhed matcher mønsteret eller ej.
  4. find() bruges til at finde flere forekomster af mønstre i teksten.
  5. Vi kan opdele en tekst baseret på et afgrænsningsmønster ved hjælp af split()-metoden

Ofte stillede spørgsmål i Java Regex

Q1. Hvad er regulære udtryk i Java?

Flere år:

Regulære udtryk i java bruges til strengmønstre, der kan bruges til at søge, manipulere og redigere en streng i Java.

Q2. Hvad er et simpelt eksempel på regulært udtryk i Java?

Flere år:

Et simpelt eksempel på et regulært udtryk i java er nævnt nedenfor:

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'>));> >}> }>

>

strenglængde java
>

Produktion

true true true>