logo

Java Regex

De Java Regex eller Regular Expression er en API til definere et mønster for å søke eller manipulere strenger .

Det er mye brukt for å definere begrensningen på strenger som passord og e-postvalidering. Etter å ha lært Java Regex-opplæringen, vil du kunne teste dine regulære uttrykk ved hjelp av Java Regex Tester Tool.

Java Regex API gir 1 grensesnitt og 3 klasser i java.util.regex pakke.

java.util.regex-pakken

Matcher- og Pattern-klassene gir anlegget til Java regulære uttrykk. Java.util.regex-pakken gir følgende klasser og grensesnitt for regulære uttrykk.

  1. MatchResult-grensesnitt
  2. Matcher klasse
  3. Mønsterklasse
  4. Klasse PatternSyntaxException
Java Regex API

Matcher klasse

Den implementerer MatchResultat grensesnitt. Det er en regex-motor som brukes til å utføre matchoperasjoner på en tegnsekvens.

Nei.MetodeBeskrivelse
1boolske treff()test om det regulære uttrykket samsvarer med mønsteret.
2boolsk funn()finner neste uttrykk som samsvarer med mønsteret.
3boolsk finn (int start)finner neste uttrykk som samsvarer med mønsteret fra gitt startnummer.
4Strengegruppe()returnerer den matchede undersekvensen.
5int start()returnerer startindeksen for den matchede undersekvensen.
6int end()returnerer sluttindeksen for den matchede undersekvensen.
7int groupCount()returnerer det totale antallet av den matchede undersekvensen.

Mønsterklasse

Det er den kompilert versjon av et regulært uttrykk . Den brukes til å definere et mønster for regex-motoren.

Nei.MetodeBeskrivelse
1statisk mønsterkompilering (regex streng)kompilerer det gitte regulære uttrykket og returnerer forekomsten av mønsteret.
2Matcher-matcher (CharSequence-inngang)oppretter en matcher som matcher den gitte inngangen med mønsteret.
3statiske boolske treff (regex streng, CharSequence input)Det fungerer som en kombinasjon av kompilerings- og matchingmetoder. Den kompilerer det regulære uttrykket og matcher den gitte inngangen med mønsteret.
4String[] delt (CharSequence-inngang)deler den gitte inndatastrengen rundt samsvar med gitt mønster.
5Strengmønster()returnerer regex-mønsteret.

Eksempel på regulære Java-uttrykk

Det er tre måter å skrive regex-eksemplet på i Java.

 import java.util.regex.*; public class RegexExample1{ public static void main(String args[]){ //1st way Pattern p = Pattern.compile('.s');//. represents single character Matcher m = p.matcher('as'); boolean b = m.matches(); //2nd way boolean b2=Pattern.compile('.s').matcher('as').matches(); //3rd way boolean b3 = Pattern.matches('.s', 'as'); System.out.println(b+' '+b2+' '+b3); }} 
Test det nå

Produksjon

 true true true 

Vanlig uttrykk . Eksempel

Den . (prikk) representerer et enkelt tegn.

 import java.util.regex.*; class RegexExample2{ public static void main(String args[]){ System.out.println(Pattern.matches('.s', 'as'));//true (2nd char is s) System.out.println(Pattern.matches('.s', 'mk'));//false (2nd char is not s) System.out.println(Pattern.matches('.s', 'mst'));//false (has more than 2 char) System.out.println(Pattern.matches('.s', 'amms'));//false (has more than 2 char) System.out.println(Pattern.matches('..s', 'mas'));//true (3rd char is s) }} 
Test det nå

Regex-karakterklasser

Nei.KarakterklasseBeskrivelse
1[abc]a, b eller c (enkel klasse)
2[^abc]Ethvert tegn unntatt a, b eller c (nektering)
3[a-zA-Z]a til z eller A til og med Z, inklusive (område)
4[a-d[m-p]]a til d, eller m til og med p: [a-dm-p] (union)
5[a-z&&[def]]d, e eller f (kryss)
6[a-z&&[^bc]]a til z, bortsett fra b og c: [ad-z] (subtraksjon)
7[a-z&&[^m-p]]a til z, og ikke m til p: [a-lq-z](subtraksjon)

Regulære uttrykk Karakterklasser Eksempel

 import java.util.regex.*; class RegexExample3{ public static void main(String args[]){ System.out.println(Pattern.matches('[amn]', 'abcd'));//false (not a or m or n) System.out.println(Pattern.matches('[amn]', 'a'));//true (among a or m or n) System.out.println(Pattern.matches('[amn]', 'ammmna'));//false (m and a comes more than once) }} 
Test det nå

Regex Quantifiers

Kvantifikatoren spesifiserer antall forekomster av et tegn.

RegexBeskrivelse
X?X forekommer én gang eller ikke i det hele tatt
X+X forekommer én 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{y,z}X forekommer minst y ganger, men mindre enn z ganger

Regulære uttrykk Karakterklasser og kvantifiserende eksempel

 import java.util.regex.*; class RegexExample4{ public static void main(String args[]){ System.out.println('? quantifier ....'); System.out.println(Pattern.matches('[amn]?', 'a'));//true (a or m or n comes one time) System.out.println(Pattern.matches('[amn]?', 'aaa'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aammmnn'));//false (a m and n comes more than one time) System.out.println(Pattern.matches('[amn]?', 'aazzta'));//false (a comes more than one time) System.out.println(Pattern.matches('[amn]?', 'am'));//false (a or m or n must come one time) System.out.println('+ quantifier ....'); System.out.println(Pattern.matches('[amn]+', 'a'));//true (a or m or n once or more times) System.out.println(Pattern.matches('[amn]+', 'aaa'));//true (a comes more than one time) System.out.println(Pattern.matches('[amn]+', 'aammmnn'));//true (a or m or n comes more than once) System.out.println(Pattern.matches('[amn]+', 'aazzta'));//false (z and t are not matching pattern) System.out.println('* quantifier ....'); System.out.println(Pattern.matches('[amn]*', 'ammmna'));//true (a or m or n may come zero or more times) }} 
Test det nå

Regex metategn

De vanlige uttrykkets metategn fungerer som kortkoder.

RegexBeskrivelse
.Ethvert tegn (kan eller ikke samsvarer med terminator)
dAlle sifre, kort enn [0-9]
DAlle ikke-siffer, forkortelse for [^0-9]
sEthvert mellomrom, forkortelse for [ x0Bf ]
SAlle tegn som ikke er mellomrom, forkortelse for [^s]
IEt hvilket som helst ordtegn, forkortelse for [a-zA-Z_0-9]
IEthvert ikke-ord-tegn, forkortelse for [^w]
En ordgrense
BEn ikke-ordgrense

Eksempel på metakarakterer med regulære uttrykk

 import java.util.regex.*; class RegexExample5{ public static void main(String args[]){ System.out.println('metacharacters d....');\d means digit System.out.println(Pattern.matches('\d', 'abc'));//false (non-digit) System.out.println(Pattern.matches('\d', '1'));//true (digit and comes once) System.out.println(Pattern.matches('\d', '4443'));//false (digit but comes more than once) System.out.println(Pattern.matches('\d', '323abc'));//false (digit and char) System.out.println('metacharacters D....');\D means non-digit System.out.println(Pattern.matches('\D', 'abc'));//false (non-digit but comes more than once) System.out.println(Pattern.matches('\D', '1'));//false (digit) System.out.println(Pattern.matches('\D', '4443'));//false (digit) System.out.println(Pattern.matches('\D', '323abc'));//false (digit and char) System.out.println(Pattern.matches('\D', 'm'));//true (non-digit and comes once) System.out.println('metacharacters D with quantifier....'); System.out.println(Pattern.matches('\D*', 'mak'));//true (non-digit and may come 0 or more times) }} 
Test det nå

Vanlige uttrykksspørsmål 1

 /*Create a regular expression that accepts alphanumeric characters only. Its length must be six characters long only.*/ import java.util.regex.*; class RegexExample6{ public static void main(String args[]){ System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun32'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'kkvarun32'));//false (more than 6 char) System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'JA2Uk2'));//true System.out.println(Pattern.matches('[a-zA-Z0-9]{6}', 'arun$2'));//false ($ is not matched) }} 

Test det nå

Vanlige uttrykksspørsmål 2

 /*Create a regular expression that accepts 10 digit numeric characters starting with 7, 8 or 9 only.*/ import java.util.regex.*; class RegexExample7{ public static void main(String args[]){ System.out.println('by character classes and quantifiers ...'); System.out.println(Pattern.matches('[789]{1}[0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '9953038949'));//true System.out.println(Pattern.matches('[789][0-9]{9}', '99530389490'));//false (11 characters) System.out.println(Pattern.matches('[789][0-9]{9}', '6953038949'));//false (starts from 6) System.out.println(Pattern.matches('[789][0-9]{9}', '8853038949'));//true System.out.println('by metacharacters ...'); System.out.println(Pattern.matches('[789]{1}\d{9}', '8853038949'));//true System.out.println(Pattern.matches('[789]{1}\d{9}', '3853038949'));//false (starts from 3) }} 
Test det nå

Eksempel på Java Regex Finder

 import java.util.regex.Pattern; import java.util.Scanner; import java.util.regex.Matcher; public class RegexExample8{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while (true) { System.out.println('Enter regex pattern:'); Pattern pattern = Pattern.compile(sc.nextLine()); System.out.println('Enter text:'); Matcher matcher = pattern.matcher(sc.nextLine()); boolean found = false; while (matcher.find()) { System.out.println('I found the text '+matcher.group()+' starting at index '+ matcher.start()+' and ending at index '+matcher.end()); found = true; } if(!found){ System.out.println('No match found.'); } } } } 

Produksjon:

 Enter regex pattern: java Enter text: this is java, do you know java I found the text java starting at index 8 and ending at index 12 I found the text java starting at index 26 and ending at index 30