Regulære uttrykk i Java

I Java er Regular Expressions eller Regex (kort sagt) i Java et API for å definere strengmønstre som kan brukes til å søke, manipulere og redigere en streng i Java. E-postvalidering og passord er noen få områder av strenger der Regex er mye brukt for å definere begrensningene. Regulære uttrykk i Java er gitt under java.util.regex pakke. Dette består av 3 klasser og 1 grensesnitt . De java.util.regex pakken består hovedsakelig av følgende tre klasser som vist nedenfor i tabellformat som følger:

Regex-klasser og grensesnitt

Regex i Java gir 3 klasser og 1 grensesnitt som er som følger:

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

Mer forståelse kan tolkes fra bildet nedenfor som følger:



Ja Nei. Klasse/grensesnitt Beskrivelse
1. Mønsterklasse Brukes til å definere mønstre
2. Matcher klasse Brukes til å utføre samsvarsoperasjoner på tekst ved hjelp av mønstre
3. PatternSyntaxException Class Brukes for å indikere syntaksfeil i et regulært uttrykksmønster
4. MatchResult-grensesnitt Brukes for å representere resultatet av en kampoperasjon

Mønsterklasse

Denne klassen er en samling av regulære uttrykk som kan brukes til å definere ulike typer mønstre, uten at det er noen offentlige konstruktører. Dette kan opprettes ved å påkalle compile()-metoden som aksepterer et regulært uttrykk som det første argumentet, og dermed returnerer et mønster etter utførelse.

Ja Nei. Metode Beskrivelse
1. kompiler (regex streng) Den brukes til å kompilere det gitte regulære uttrykket til et mønster.
2. kompiler (regex streng, int flagg) Den brukes til å kompilere det gitte regulære uttrykket til et mønster med de gitte flaggene.
3. flagg() Den brukes til å returnere dette mønsterets kampflagg.
4. matcher (CharSequence-inngang) Den brukes til å lage en matcher som vil matche den gitte inngangen mot dette mønsteret.
5. samsvarer (regex streng, inndata for tegnsekvens) Den brukes til å kompilere det gitte regulære uttrykket og forsøker å matche det gitte innspillet mot det.
6. mønster() Det brukes til å returnere det regulære uttrykket som dette mønsteret ble kompilert fra.
7. sitat (streng s) Den brukes til å returnere en bokstavelig mønsterstreng for den angitte strengen.
8. split (CharSequence-inngang) Den brukes til å dele den gitte inndatasekvensen rundt samsvar med dette mønsteret.
9. split (CharSequence input, int limit) Den brukes til å dele den gitte inndatasekvensen rundt samsvar med dette mønsteret. Grenseparameteren kontrollerer antall ganger mønsteret brukes.
10. toString() Den brukes til å returnere strengrepresentasjonen av dette mønsteret.

Eksempel: Mønsterklasse

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

Produksjon

true false 

Matcher klasse

Dette objektet brukes til å utføre matchoperasjoner for en inndatastreng i Java, og dermed tolke de tidligere forklarte mønstrene. Også dette definerer ingen offentlige konstruktører. Dette kan implementeres ved å påkalle en matcher() på et hvilket som helst mønsterobjekt.

Ja Nei. Metode Beskrivelse
1. finne() Den brukes hovedsakelig til å søke i flere forekomster av regulære uttrykk i teksten.
2. finne (int start) Den brukes til å søke etter forekomster av regulære uttrykk i teksten med utgangspunkt i den gitte indeksen.
3. start() Den brukes for å få startindeksen til et samsvar som blir funnet ved hjelp av find()-metoden.
4. slutt() Den brukes for å få sluttindeksen til et samsvar som blir funnet ved hjelp av find()-metoden. Den returnerer indeksen til tegnet ved siden av det siste samsvarende tegnet.
5. groupCount() Den brukes til å finne det totale antallet av den matchede undersekvensen.
6. gruppe() Den brukes til å finne den matchede undersekvensen.
7. fyrstikker() Den brukes til å teste om det regulære uttrykket samsvarer med mønsteret.

Merk: T Pattern.matches() sjekker om hele teksten samsvarer med et mønster eller ikke. Andre metoder (demonstrert nedenfor) brukes hovedsakelig for å finne flere forekomster av mønstre i teksten.

La oss diskutere noen eksempler på programmer slik vi gjorde for mønsterklassen. Her skal vi diskutere noen få Java-programmer som viser hvordan compile(), find(), start(), end() og split() fungerer for å få en bedre forståelse av Matcher-klassen.

Eksempel 1: Mønstersøking

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 enn x, y eller z

[a-zA-Z]

tegn fra område a til å eller A til Å.

[a-f[m-t]]

Sammenslutning av a til f og m til t.

[a-z && p-y]

Hele spekteret av elementer skjærer hverandre mellom to områder

[a-z && [^bc]]

a til z forening med unntatt b og c

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

a til z forening med unntatt område m til p

Nedenfor er implementeringen av emnet ovenfor:

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

Produksjon

true false 

Regex metategn

Regex

Beskrivelse

X?

X vises én gang eller ikke

X+

X vises én eller flere ganger

X*

X vises null eller ikke én gang

X{n}

X vises n ganger

X{n,}

X vises n ganger eller mer enn n

X{n,m}

X vises større enn lik n ganger og mindre enn m ganger.

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

Produksjon

false true false true 

Eksempel på Java Regex Finder

Regex

Beskrivelse

.

Hvilken som helst karakter

d

Alle sifre, [0-9]

D

Alle ikke-siffer, [^0-9]

s

Mellomrom, [ x0Bf ]

S

Ikke-mellomrom, [^s]

I

Ordtegn, [a-zA-Z_0-9]

I

Ikke-ord-tegn, [^w]



Ordgrense

B

Ikke-ordgrense

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

Produksjon

true false true true 

Konklusjon

Til slutt, la oss diskutere noen av de viktige observasjonene som er hentet fra artikkelen ovenfor

  1. Vi lager et mønsterobjekt ved å kalle Pattern.compile(), det er ingen konstruktør. compile() er en statisk metode i Pattern-klassen.
  2. Som ovenfor lager vi et Matcher-objekt ved å bruke matcher() på objekter i Pattern-klassen.
  3. Pattern.matches() er også en statisk metode som brukes til å sjekke om en gitt tekst som helhet samsvarer med mønsteret eller ikke.
  4. find() brukes til å finne flere forekomster av mønstre i teksten.
  5. Vi kan dele en tekst basert på et skillemønster ved å bruke split()-metoden

Vanlige spørsmål i Java Regex

Q1. Hva er regulære uttrykk i Java?

År:

Regulære uttrykk i java brukes for strengmønstre som kan brukes til å søke, manipulere og redigere en streng i Java.

Q2. Hva er et enkelt eksempel på regulære uttrykk i Java?

År:

Et enkelt eksempel på et regulært uttrykk i java er nevnt 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'> ));> > }> }>

Produksjon

true true true 



Topp Artikler

Kategori

Interessante Artikler