The Java Regex ali Regular Expression je API za definirajte vzorec za iskanje ali manipulacijo nizov .
Pogosto se uporablja za definiranje omejitve nizov, kot sta preverjanje gesla in elektronske pošte. Ko se naučite vadnice za regex Java, boste lahko testirali svoje regularne izraze z orodjem za preizkušanje regexov Java.
Java Regex API ponuja 1 vmesnik in 3 razrede v java.util.regex paket.
paket java.util.regex
Razreda Matcher in Pattern nudita možnost regularnega izraza Java. Paket java.util.regex ponuja naslednje razrede in vmesnike za regularne izraze.
- Vmesnik MatchResult
- Matcher razred
- Razred vzorca
- Razred PatternSyntaxException
Matcher razred
Izvaja MatchResult vmesnik. Je regex motor ki se uporablja za izvajanje operacij ujemanja na zaporedju znakov.
št. | Metoda | Opis |
---|---|---|
1 | logična ujemanja() | preizkusite, ali se regularni izraz ujema z vzorcem. |
2 | logično iskanje () | poišče naslednji izraz, ki se ujema z vzorcem. |
3 | logično iskanje (int začetek) | poišče naslednji izraz, ki se ujema z vzorcem iz podane začetne številke. |
4 | Skupina nizov() | vrne ujemajoče se podzaporedje. |
5 | int začetek() | vrne začetni indeks ujemajočega se podzaporedja. |
6 | int end() | vrne končni indeks ujemajočega se podzaporedja. |
7 | int groupCount() | vrne skupno število ujemajočega se podzaporedja. |
Razred vzorca
Je prevedena različica regularnega izraza . Uporablja se za definiranje vzorca za mehanizem regularnih izrazov.
št. | Metoda | Opis |
---|---|---|
1 | prevajanje statičnega vzorca (redni izraz niza) | prevede dani regularni izraz in vrne primerek vzorca. |
2 | Ujemanje ujemanja (vnos CharSequence) | ustvari ujemalnik, ki se ujema z danim vnosom z vzorcem. |
3 | statična logična ujemanja (regularni izraz niza, vnos CharSequence) | Deluje kot kombinacija metod prevajanja in ujemanja. Prevede regularni izraz in ujema dani vnos z vzorcem. |
4 | Niz [] razdeljen (vnos CharSequence) | razdeli dani vhodni niz okoli ujemanja danega vzorca. |
5 | Vzorec niza() | vrne vzorec regularnega izraza. |
Primer regularnih izrazov Java
Obstajajo trije načini za pisanje primera regularnega izraza v Javi.
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); }}Preizkusite zdaj
Izhod
true true true
Vsakdanje izražanje . Primer
The . (pika) predstavlja en znak.
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) }}Preizkusite zdaj
Razredi znakov regularnih izrazov
št. | Razred znakov | Opis |
---|---|---|
1 | [abc] | a, b ali c (preprost razred) |
2 | [^abc] | Kateri koli znak razen a, b ali c (negacija) |
3 | [a-zA-Z] | od a do ž ali od A do vključno Ž (razpon) |
4 | [a-d[m-p]] | od a do d ali od m do p: [a-dm-p] (unija) |
5 | [a-z&&[def]] | d, e ali f (križišče) |
6 | [a-z&&[^bc]] | a do z, razen b in c: [ad-z] (odštevanje) |
7 | [a-z&&[^m-p]] | a do z in ne od m do p: [a-lq-z](odštevanje) |
Razredi znakov regularnega izraza Primer
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) }}Preizkusite zdaj
Kvantifikatorji regularnih izrazov
Kvantifikatorji določajo število pojavitev znaka.
Regex | Opis |
---|---|
X? | X se pojavi enkrat ali pa sploh ne |
X+ | X se pojavi enkrat ali večkrat |
X* | X se pojavi nič ali večkrat |
X{n} | X se pojavi samo n-krat |
X{n,} | X se pojavi n ali večkrat |
X{y,z} | X se pojavi vsaj y-krat, vendar manj kot z-krat |
Razredi znakov regularnega izraza in primer kvantifikatorjev
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) }}Preizkusite zdaj
Metaznaki regularnih izrazov
Metaznaki regularnega izraza delujejo kot kratke kode.
Regex | Opis |
---|---|
. | Kateri koli znak (lahko se ujema z zaključkom) |
d | Poljubne števke, razen [0-9] |
D | Vse, kar ni številka, okrajšava za [^0-9] |
s | Kateri koli presledek, okrajšava za [ x0Bf ] |
S | Kateri koli znak, ki ni presledek, okrajšava za [^s] |
In | Kateri koli besedni znak, okrajšava za [a-zA-Z_0-9] |
IN | Vsak nebesedni znak, okrajšava za [^w] |
Besedna meja | |
B | Nebesedna meja |
Primer metaznakov regularnega izraza
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) }}Preizkusite zdaj
Vprašanje o regularnem izrazu 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) }}
Preizkusite zdaj
2. vprašanje o regularnem izrazu
/*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) }}Preizkusite zdaj
Primer iskalnika regularnih izrazov Java
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.'); } } } }
Izhod:
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