logo

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.



java for loop
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]

"hva er 10 av 100"
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

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

>

strenglengde java
>

Produksjon

true true true>