Hvordan skrive regex i Java

Hvordan skrive regex i Java

De Regex (akronym av vanlig uttrykk) er en sekvens av tegn som hjelper oss med å søke og manipulere strengene. Vanlig uttrykk kan brukes på alle programmeringsspråk som Java, C ++, etc. Å benytte funksjonalitetene til regex, Java gir en innebygd pakke Java.util.regex som inneholder tre klasser Mønster, Matcher, og PatternsyntaxException.

Denne oppskrivningen vil gi en omfattende oversikt over hvordan du skriver regex i Java og å gjøre det, vi må forstå følgende konsepter:

  • Java.util.Regex -pakke
  • Mønsteroppretting og mønstermatching i regex
  • Flagg og mønstre i regex
  • Metacharacters i Regex
  • Kvantifiserere i regex
  • Hvordan skrive regex i Java

Så la oss komme i gang!

Java.util.Regex -pakke

Det er en innebygd pakke som inkluderer tre klasser: a Mønster klasse for å definere et mønster som vil bli brukt i søk, en Matcher klasse som kan brukes til å søke etter et mønster, og en PatternsyntaxException klasse for å indikere en syntaksfeil/unntak i en regex mønster.

Mønsteroppretting og mønstermatching i regex

Vi må påkalle kompilere() metode for Mønster klasse for å lage et mønster. Compile () -metoden vil returnere et mønster som vil bli tolket av Matcher () metode for å utføre kampoperasjonen over strengen/sekvensen til tegn.

Før vi drar mot hvordan du skriver en regex i Java først, må vi forstå noen viktige flagg, metakarakterer og kvantifiserere som kan være nyttige ved å skrive en regex.

Mønstre i regex

Mønsterklasse bruker sin kompilere() Metode for å lage et mønster og det kan ta to parametere, det ene for mønsteret som skal søkes og den andre er valgfritt som brukes til å spesifisere et flagg.

Som kompilere() Metoden tar et mønster i den første parameteren, derfor er noen ofte brukte mønstre gitt nedenfor:

  1. [-] Innenfeste representerer "-" forskjellige tegn, mens [-] representerer et mønster som definerer at Find/søker et tegn blant alternativene som er spesifisert i parentesene.
  2. [ ^-] Her representerer ^ -tegnet ikke, noe som betyr at hvis vi spesifiserer et ^ tegn med noe mønster, betyr det å finne et tegn bortsett fra alternativene som er spesifisert i parentesene.
  3. [0-9], representerer å finne et tall mellom 0 til 9.

Flagg i vanlige uttrykk

Flagg kan sendes som den andre parameteren til Compile () -metoden, og den brukes til å spesifisere søketilferden til regex. For eksempel er CASE_INSENSTIVE et flagg som bestemmer: Søk etter mønsteret uavhengig av sakens følsomhet i.e. store bokstaver eller små bokstaver.

Metacharacters i Regex

De Metacharacters Hjelp oss med å definere søkekriteriene for regexen og disse Metacharacters har litt spesiell betydning. Noen oftest brukte metakarakterer er oppført i tabellen under gitt:

Metacharacters Beskrivelse
\ d finner et siffer
\ b finner en kamp i begynnelsen eller på slutten av ordet
$ finner en kamp på slutten av strengen
^ finner kampen i starten av strengen
\ S Brukes til å søke i de hvite rommene
| Finner en kamp fra flere alternativer som er atskilt med '|'.
. Pleide å matche en enkelt karakter

Kvantifiserere i regex

Som navnet i seg selv antyder, spesifiserer kvantifisererne mengde i.e. Hvor mange ganger et tall forekommer i et mønster, noen ofte brukte kvantifiserere er gitt i følgende tabell:

Kvantifiserere Beskrivelse
EN+ A forekommer minst en gang
EN* A oppstår null eller mer tid
EN? A oppstår enten null tid eller en gang
A n Et forekommer n antall ganger
A n, A oppstår n ganger eller mer enn n ganger
A x, y A oppstår mellom det medfølgende området i.e. A forekommer minst x ganger, men mindre enn y ganger

Hvordan skrive regex i Java

Mønsterklassen vil bli brukt til å lage et mønster og for å gjøre det, så vi må påkalle det “Offentlig statisk kompilering ()” Metode, etterpå vil vi spesifisere mønsteret i kompilere() metode.

I Java kan en regex skrives på flere måter som oppført nedenfor:

Første metode

I utdraget nedenfor, oppretter vi for det første gjenstanden for mønsterklasse, og vi spesifiserer mønsteret innenfor dens kompileringsmetode. Vi bruker en metakarakter “.” som sier at strengen består av to bokstaver der den første bokstaven kan være alt annet enn det andre brevet må være "Jeg":

offentlig klasse WriteRegeXExample
publicClassWriterEgexExample
publicStaticVoidmain (String Args [])
Mønster ptrn = mønster.kompilere(".Jeg");
Matcher mat = ptrn.Matcher ("Hei");
booleanbol = matte.fyrstikker();
System.ute.Println (BOL);

Vi lager gjenstanden for matcher -klassen som vil tolke mønsteret og vil utføre de matchende operasjonene på inngangsstrengen. Deretter benyttet vi Matches () -metoden som vil returnere en boolsk verdi, hvis kampen er funnet, returnerer den "sann" ellers falsk.

Utgangen viser sant, noe som betyr at den ønskede kampen ble funnet vellykket.

Andre metode

Det undergitte utdraget viser en annen måte å skrive regex i Java:

boolean bol = mønster.kompilere(".Jeg").Matcher ("Hei").fyrstikker();
System.ute.Println (BOL);

Denne gangen bruker vi kompilere (), matcher (), og fyrstikker() Metoder på en gang.

Utgangen viser at programmet vårt fungerer som det skal.

Tredje metode

En annen måte å skrive en regex er at vi direkte kan bruke fyrstikker() Metode for matcher -klassen med mønsterklassen og innenfor parentesen, vil vi spesifisere "mønster”Og strengen som vi vil matche med.

boolean bol = mønster.fyrstikker(".Jeg "," hei ");
System.ute.Println (BOL);

Den komplette koden og respektive utgang vises i følgende utdrag:

Output autentiserer arbeidet med ovennevnte program.

Konklusjon

Regex er en sekvens av tegn som definerer søkemønstrene som kan brukes til å søke, manipulere og redigere en streng. Regex kan skrives på flere måter, tilnærmingen for å skrive en regex kan være annerledes, men vi må bruke kompilere() metode for mønsterklasse, og fyrstikker() Metode for matcher -klasse i hver tilnærming. Denne oppskrivningen presenterer en detaljert oversikt over hvordan du skriver en regex i Java og for en bedre forståelse, forklarer den alle nødvendige aspekter ved vanlige uttrykk som kvantifiserere, metakarakterer og så videre.