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:
- Mønsterklasse
- Matcher klasse
- PatternSyntaxException Class
- 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
- Vi lager et mønsterobjekt ved å kalle Pattern.compile(), det er ingen konstruktør. compile() er en statisk metode i Pattern-klassen.
- Som ovenfor lager vi et Matcher-objekt ved å bruke matcher() på objekter i Pattern-klassen.
- Pattern.matches() er også en statisk metode som brukes til å sjekke om en gitt tekst som helhet samsvarer med mønsteret eller ikke.
- find() brukes til å finne flere forekomster av mønstre i teksten.
- 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>Produksjontrue true true>