Java Regex - Hva er regulære uttrykk og hvordan bruker jeg det?



Java Regex er et API som brukes til å definere et mønster for søk eller manipulering av strenger. Denne artikkelen vil også snakke om forskjellige klasser av regulære uttrykk levert av Java.

Datautvinning eller validering er et viktig aspekt av hvert programmeringsspråk. En av de mest populære måtene for datavalidering er å bruke regulære uttrykk. bruker dissevanlige uttrykk for å beskrive et mønster av tegn. Denne artikkelen på Java Regex vil liste opp de forskjellige metodene for å bruke uttrykk i følgende rekkefølge:

La oss komme i gang!





Hva er vanlige uttrykk?

TIL Vanlig uttrykk er en sekvens av tegn som konstruerer et søkemønster. Når du søker etter data i en tekst, kan du bruke dette søkemønsteret til å beskrive det du leter etter.

Regular Expressions - Java Regex - Edureka



Et vanlig uttrykk kan være en enkelt karakter eller et mer komplisert mønster. Den kan brukes til alle typer tekstsøk og tekstutskiftningsoperasjoner. Et Regex-mønster består av enkle tegn, for eksempel / abc / , eller en kombinasjon av enkle og spesialtegn, for eksempel / ab * c / eller /eksempel(d+).d*/ .

Hva er Java Regex?

De Java Regex er et API som er vant til definere et mønster for søking eller manipulering . Det brukes mye for å definere begrensningen for strenger som passord og validering av e-post.

Det er forskjellige metoder for å bruke Java Regex. Så la oss gå videre og se på de forskjellige uttrykkene.



Matcherklasse

Denne klassen brukes til å utføre kampoperasjoner på en tegnsekvens. Tabellen nedenfor representerer ulike metoder i Matcher-klassen.

Metode Beskrivelse
boolske kamper () Tester om det gitte regulære uttrykket samsvarer med mønsteret
boolsk funn () Brukes til å finne neste uttrykk som samsvarer med mønsteret
boolsk funn (int start) Søker i neste uttrykk som samsvarer med mønsteret fra det gitte startnummeret
Strenggruppe () Brukes til å returnere den matchede undersøkelsen
int start () Returnerer startindeksen for den matchede undersekvensen
int end () Returnerer sluttindeksen for den matchede undersekvensen
int groupCount () Returnerer totalt antall matchede undersøkelser

Mønster klasse

Mønster klasse er en samlet versjon av vanlig uttrykk som brukes til å definere mønsteret for regex motor.

hvordan du setter vei i java
Metode Beskrivelse
statisk mønsterkompilering (String regex) Den kompilerer den gitte regexen og returnerer forekomsten av mønsteret
Matcher treff (CharSequence-inngang) Den brukes til å lage en matcher som samsvarer med den gitte inngangen med mønsteret
statiske boolske kamper (String regex, CharSequence input) Det fungerer som en kombinasjon av kompilerings- og matchingsmetoder. Den kompilerer det regulære uttrykket og matcher den gitte inngangen med mønsteret
Streng [] split (CharSequence input) Brukes til å dele den gitte innspillstrengen rundt treff i et gitt mønster
Strengmønster () Hjelper med å returnere regex-mønsteret

La oss nå ta et lite eksempel for å forstå hvordan du skriver et vanlig uttrykk.

importer java.util.regex. * public class RegexExample {public static void main (String [] args) {Pattern pattern = Pattern.compile ('. xx.') Matcher matcher = pattern.matcher ('AxxB') System.out .println ('String samsvarer med gitt Regex - + matcher.matches ())}}

I dette tilfellet bruker den mønster og matcher internt regex-klasser for å gjøre behandlingen, men åpenbart,det reduserer kodelinjene. Mønsterklasse inneholder også samsvarsmetode som tar regex og input Streng som argument og returnerer et boolsk resultat etter å ha matchet dem. Så koden fungerer bra for å matche input med et vanlig uttrykk i Java. Derfor vil utdataene være sanne som vist nedenfor.

Produksjon:
ekte

La oss nå se noen flere kategorier av Java Regular Expressions.

Regex karakterklasse

Tabellen nedenfor representerer den forskjellige karakterklassekombinasjonen.

KarakterklasseBeskrivelse
[abc] a, b eller c (enkel klasse)
[^ abc] Ethvert tegn unntatt a, b eller c (negasjon)
[a-zA-Z] a til z eller A til Z, inkludert (rekkevidde)
[a-d [m-p]] a til d, eller m til p: [a-dm-p] (union)
[a-z && [def]] d, e eller f (kryss)
[a-z && [^ bc]] a til z, bortsett fra b og c: [ad-z] (subtraksjon)
[a-z && [^ m-p]] a til z, og ikke m til p: [a-lq-z] (subtraksjon)

Eksempel:

importer java.util.regex. * public class CharacterExample {public static void main (String args []) {// false (not x or y or z) System.out.println (Pattern.matches ('[xyz]', 'wbcd')) // true (blant x eller y eller z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x og y kommer mer enn en gang) System .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex-kvantifiserere

Kvantifisererne angir antall forekomster av et tegn. Tabellen nedenfor representerer forskjellige kvantifiseringsmidler.

RegexBeskrivelse
X? X forekommer en gang eller ikke i det hele tatt
X + X forekommer en eller flere ganger
X * X forekommer null eller flere ganger
X {n} X forekommer bare n ganger
X {n,} X forekommer n eller flere ganger
X og Z} X forekommer minst y ganger, men mindre enn z ganger

Eksempel:

importer java.util.regex. * public class Eksempel {public static void main (String args []) {System.out.println ('? quantifier ....') // (a eller y eller z kommer en gang) System.out.println (Pattern.matches ('[ayz]?', 'A')) // output: true System.out.println (Pattern.matches ('[ayz]?', 'Aaa')) / / (ay og z kommer mer enn én gang) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a kommer mer enn en gang) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a eller y eller z må komme en gang) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a eller y eller z en eller flere ganger) System.out.println (Mønster .matches ('[ayz] +', 'a')) // output: true // (a kommer mer enn en gang) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a eller y eller z kommer mer enn en gang) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z og t samsvarer ikke med mønsteret) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a eller y eller z kan komme null eller flere ganger ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

I utgangspunktet vil den søke etter den matchende kvantifisereren og matche søkeresultatet.

Regex Metacharacters

Metategnene for regulære uttrykk fungerer som kortkoder. La oss ta en titt på tabellen nedenfor for å forstå forskjellige typer metategn.

RegexBeskrivelse
. Det kan være hvilken som helst karakter (matcher eventuelt terminator)
d Representerer alle sifre, mindre enn [0-9]
D Representerer ikke-sifret, kort for [^ 0-9]
s Representerer et hvilket som helst mellomromstegn, forkortelse for [tnx0Bfr]
S Det kan være et tegn som ikke er mellomrom, kort for [^ s]
i Det kan være et ordtegn, kort for [a-zA-Z_0-9]
I Representerer tegn som ikke er ord, forkortelse for [^ w]
b Representerer en ordgrense
B Det er en ikke-ordgrense

Eksempel:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d means digit System.out.println ('metacharacters d ....') // (non-digit) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (siffer og kommer en gang) System.out.println (Pattern.matches ('d', '1') ) // Utgang: sann // (siffer, men kommer mer enn en gang) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (sifre og tegn) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D betyr ikke-sifret System.out.println ('metategn D ....') // (ikke-sifret men kommer mer enn en gang) System.out.println (Pattern.matches ('D', 'abc')) // Output: false // Its a Digit System.out.println (Pattern.matches ('D', '1 ')) // Output: false System.out.println (Pattern.matches (' D ',' 4443 ')) // Output: false // (digit and char) System.out.println (Pattern.matches (' D ',' 323abc ')) // Utgang: falsk // (ikke-siffer og kommer en gang) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metategn D med kvantifier ....') // (ikke-siffer og kan komme 0 eller flere ganger) System.out.println (Pattern.matches ('D *', 'abc')) // Output : sant}}

Basert på de ovennevnte forholdene, vil den vise utdataene. Slik fungerer det. Så det handlet om forskjellige typer Regex. Med dette kommer vi til slutten av denne artikkelen. Jeghåper du syntes det var informativt. Hvis du ønsker å lære mer, kan du sjekke ut vår også.

Sjekk ut av Edureka, et pålitelig online læringsfirma med et nettverk med mer enn 250 000 fornøyde elever spredt over hele verden. Vi er her for å hjelpe deg med hvert trinn på reisen, for å bli en foruten dette java-intervjuspørsmålene, kommer vi med en læreplan som er designet for studenter og fagpersoner som ønsker å være Java-utvikler.

Har du spørsmål til oss? Vennligst nevn det i kommentarfeltet i denne 'Java Regex' -artikkelen, så kommer vi tilbake til deg så snart som mulig.