Java Regex - Hvad er regulære udtryk, og hvordan bruges det?



Java Regex er en API, der bruges til at definere et mønster til søgning eller manipulering af strenge. Denne artikel vil også tale om forskellige klasser af Regular Expressions leveret af Java.

Dataekstraktion eller validering er et vigtigt aspekt af ethvert programmeringssprog. En af de mest populære måder til datavalidering er ved at bruge regulære udtryk. bruger disseregelmæssige udtryk for at beskrive et tegnemønster. Denne artikel om Java Regex vil liste de forskellige metoder til brug af udtryk i følgende rækkefølge:

Lad os komme igang!





Hvad er regulære udtryk?

TIL Almindelig udtryk er en sekvens af tegn, der konstruerer et søgemønster. Når du søger efter data i en tekst, kan du bruge dette søgemønster til at beskrive det, du leder efter.

Regular Expressions - Java Regex - Edureka



Et regelmæssigt udtryk kan være en enkelt tegn eller et mere kompliceret mønster. Det kan bruges til enhver form for tekstsøgning og tekstudskiftning. Et Regex-mønster består af enkle tegn, f.eks / abc / eller en kombination af enkle og specialtegn, såsom / ab * c / eller /eksempel(d+).d*/ .

Hvad er Java Regex?

Det Java Regex er en API, der er vant til definere et mønster til søgning eller manipulation . Det bruges i vid udstrækning til at definere begrænsningen på strenge såsom adgangskode og validering af e-mail.

dyb kopi vs lav kopi java

Der er forskellige metoder til at bruge Java Regex. Så lad os gå videre og se på de forskellige udtryk.



Matcher klasse

Denne klasse bruges til at udføre matchoperationer på en tegnsekvens. Nedenstående tabel repræsenterer forskellige metoder i Matcher-klassen.

Metode Beskrivelse
boolske kampe () Tester, om det givne regulære udtryk matcher mønsteret
boolsk fund () Bruges til at finde det næste udtryk, der matcher mønsteret
boolsk find (int start) Søger det næste udtryk, der matcher mønsteret fra det givne startnummer
Strenggruppe () Bruges til at returnere den matchede sekvens
int start () Returnerer startindekset for den matchede sekvens
int ende () Returnerer slutningsindekset for den matchede sekvens
int groupCount () Returnerer det samlede antal af den matchede efterfølgende

Mønster klasse

Mønsterklasse er en kompileret version af regulært udtryk, der bruges til at definere mønsteret for regex-motor.

Metode Beskrivelse
statisk mønster kompilering (String regex) Den kompilerer den givne regex og returnerer forekomsten af ​​mønsteret
Matcher matches (CharSequence-input) Det bruges til at oprette en matcher, der matcher det givne input med mønsteret
statiske boolske matches (String regex, CharSequence input) Det fungerer som en kombination af kompilerings- og matchningsmetoder. Det kompilerer det regulære udtryk og matcher det givne input med mønsteret
Streng [] split (CharSequence input) Bruges til at opdele den givne inputstreng omkring matches af et givet mønster
Strengmønster () Hjælper med at returnere regex-mønsteret

Lad os nu tage et lille eksempel for at forstå, hvordan man skriver et regulært udtryk.

import 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 matcher den givne Regex - + matcher.matches ())}}

I dette tilfælde bruger det internt mønster og matcher regex-klasser for at udføre behandlingen, men selvfølgeligdet reducerer kodelinjerne. Mønsterklasse indeholder også matches-metode, der tager regex og input streng som argument og returnerer et boolsk resultat efter matchning med dem. Så koden fungerer fint til matchende input med et regulært udtryk i Java. Derfor vil output være sandt som vist nedenfor.

Produktion:
sand

installer php på Windows 10

Lad os nu se et par flere kategorier af Java Regular Expressions.

Regex karakterklasse

Nedenstående tabel repræsenterer den forskellige kombination af tegnklasser.

KarakterklasseBeskrivelse
[abc] a, b eller c (enkel klasse)
[^ abc] Enhver karakter undtagen a, b eller c (negation)
[a-zA-Z] a til z eller A til Z, inklusive (interval)
[a-d [m-p]] a til d, eller m til p: [a-dm-p] (union)
[a-z && [def]] d, e eller f (kryds)
[a-z && [^ bc]] a til z undtagen b og c: [ad-z] (subtraktion)
[a-z && [^ m-p]] a til z, og ikke m gennem p: [a-lq-z] (subtraktion)

Eksempel:

import 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 (blandt x eller y eller z) System.out.println (Pattern.matches ('[xyz]', 'x')) // false (x og y kommer mere end en gang) System .out.println (Pattern.matches ('[xyz]', 'xxyyyyyz'))}}

Regex-kvantifikatorer

Kvantifikatorerne angiver antallet af forekomster af et tegn. Nedenstående tabel repræsenterer forskellige kvantificeringsmidler.

RegexBeskrivelse
X? X forekommer en gang eller slet ikke
X + X forekommer en eller flere gange
X * X forekommer nul eller flere gange
X {n} X forekommer kun n gange
X {n,} X forekommer n eller flere gange
X og Z} X forekommer mindst y gange, men mindre end z gange

Eksempel:

import 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 mere end én gang) System.out.println (Pattern.matches ('[ayz]?', 'ayyyyzz')) // output: false // (a kommer mere end én gang) System. out.println (Pattern.matches ('[ayz]?', 'amnta')) // output: false // (a eller y eller z skal komme en gang) System.out.println (Pattern.matches ('[ ayz]? ',' ay ')) // output: false System.out.println (' + quantifier .... ') // (a eller y eller z en eller flere gange) System.out.println (Mønster .matches ('[ayz] +', 'a')) // output: true // (a kommer mere end én gang) System.out.println (Pattern.matches ('[ayz] +', 'aaa' )) // outpu: true // (a eller y eller z kommer mere end én gang) System.out.println (Pattern.matches ([amn] + ',' aayyyzz ')) // output: true // (z og t matcher ikke mønster) System.out.println (Pat tern.matches ('[ayz] +', 'aammta')) // output: false System.out.println ('* quantifier ....') // (a eller y eller z kan komme nul eller flere gange ) System.out.println (Pattern.matches ('[ayz] *', 'ayyyza')) // output: true}}

Dybest set vil den søge efter den matchende kvantifier og matche søgeresultatet.

Regex Metacharacters

Metategnene for regulært udtryk fungerer som kortkoder. Lad os se på nedenstående tabel for at forstå forskellige typer metategn.

RegexBeskrivelse
. Det kan være et hvilket som helst tegn (matcher eventuelt terminator)
d Repræsenterer alle cifre, under [0-9]
D Repræsenterer enhver ikke-cifret, forkortelse for [^ 0-9]
s Repræsenterer ethvert mellemrumstegn, kort for [tnx0Bfr]
S Det kan være et tegn, der ikke er mellemrum, forkortelse for [^ s]
i Det kan være et ordtegn, kort for [a-zA-Z_0-9]
I Repræsenterer ethvert tegn, der ikke er ord, forkortelse for [^ w]
b Repræsenterer en ordgrænse
B Det er en ikke-ordgrænse

Eksempel:

import java.util.regex. * public class MetacharExample {public static void main (String args []) {// d betyder cifret System.out.println ('metacharacters d ....') // (ikke-cifret) System.out.println (Pattern.matches ('d', 'abc')) // Output: false // (ciffer og kommer en gang) System.out.println (Pattern.matches ('d', '1') ) // Output: true // (ciffer, men kommer mere end en gang) System.out.println (Pattern.matches ('d', '4443')) // Output: false // (ciffer og char) System.out .println (Pattern.matches ('d', '323abc')) // Output: false // D betyder ikke-cifret System.out.println ('metacharacters D ....') // (ikke-cifret men kommer mere end én 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 // (ciffer og tegn) System.out.println (Pattern.matches (' D ',' 323abc ')) // Output: false // (ikke-cifret og kommer en gang) System.out.println (Pattern.matches (' D ',' m ')) // Output: true System.out .pr intln ('metategn D med kvantificering ....') // (ikke-cifret og kan komme 0 eller flere gange) System.out.println (Pattern.matches ('D *', 'abc')) // Output : sand } }

Baseret på de ovennævnte betingelser viser den output. Sådan virker det. Så det handlede om forskellige typer Regex. Med dette kommer vi til slutningen af ​​denne artikel. jeghåber du fandt det informativt. Hvis du ønsker at lære mere, kan du tjekke vores såvel.

passere værdi i java

Tjek af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Vi er her for at hjælpe dig med hvert trin på din rejse, for at blive et udover dette java-interviewspørgsmål, kommer vi med en læseplan, der er designet til studerende og fagfolk, der ønsker at være Java-udvikler.

Har du et spørgsmål til os? Nævn det i kommentarfeltet i denne “Java Regex” -artikel, og vi vender tilbage til dig hurtigst muligt.