A Java Regex vagy a Regular Expression egy API definiáljon mintát a karakterláncok kereséséhez vagy manipulálásához .
Széles körben használják az olyan karakterláncokra vonatkozó korlátozások meghatározására, mint a jelszó és az e-mail ellenőrzés. Miután megtanulta a Java regex oktatóanyagot, tesztelheti reguláris kifejezéseit a Java Regex Tester Tool segítségével.
A Java Regex API 1 interfészt és 3 osztályt biztosít java.util.regex csomag.
java.util.regex csomag
A Matcher és Pattern osztályok biztosítják a Java reguláris kifejezésének lehetőségét. A java.util.regex csomag a következő osztályokat és felületeket kínálja a reguláris kifejezésekhez.
- MatchResult felület
- Matcher osztály
- Minta osztály
- PatternSyntaxException osztály
Matcher osztály
Megvalósítja a MatchResult felület. Ez egy regex motor amely egy karaktersorozaton történő egyeztetési műveletek végrehajtására szolgál.
Nem. | Módszer | Leírás |
---|---|---|
1 | logikai egyezések() | tesztelje, hogy a reguláris kifejezés megfelel-e a mintának. |
2 | logikai lelet() | megkeresi a következő kifejezést, amely megfelel a mintának. |
3 | logikai keresés (int start) | megkeresi a következő kifejezést, amely megfelel a mintának a megadott kezdőszámból. |
4 | String group() | visszaadja az egyező részsorozatot. |
5 | int start() | az illeszkedő részsorozat kezdőindexét adja vissza. |
6 | int end() | az egyező részsorozat záró indexét adja vissza. |
7 | int groupCount() | az egyező részsorozat teljes számát adja vissza. |
Minta osztály
Ez a reguláris kifejezés lefordított változata . A regex motor mintájának meghatározására szolgál.
Nem. | Módszer | Leírás |
---|---|---|
1 | statikus minta fordítás (karakterlánc regex) | lefordítja az adott reguláris kifejezést, és visszaadja a minta példányát. |
2 | Matcher matcher (CharSequence bemenet) | létrehoz egy illesztőt, amely az adott bemenetet a mintával illeszti. |
3 | statikus logikai egyezések (String regex, CharSequence bemenet) | A fordítási és egyeztető módszerek kombinációjaként működik. Lefordítja a reguláris kifejezést, és a megadott bemenetet a mintával párosítja. |
4 | String[] felosztás (CharSequence bemenet) | felosztja az adott bemeneti karakterláncot az adott minta egyezései köré. |
5 | String minta() | visszaadja a regex mintát. |
Példa Java reguláris kifejezésekre
Háromféleképpen írhatja meg a regex példát Java nyelven.
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); }}Tesztelje most
Kimenet
true true true
Reguláris kifejezés . Példa
A . (pont) egyetlen karaktert jelöl.
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) }}Tesztelje most
Regex karakterosztályok
Nem. | Karakter osztály | Leírás |
---|---|---|
1 | [ABC] | a, b vagy c (egyszerű osztály) |
2 | [^abc] | Bármely karakter, kivéve a, b vagy c (negáció) |
3 | [a-zA-Z] | a-tól z-ig vagy A-tól Z-ig, beleértve (tartomány) |
4 | [a-d[m-p]] | a-d, vagy m-től p-ig: [a-dm-p] (egyesítés) |
5 | [a-z&&[def]] | d, e vagy f (metszéspont) |
6 | [a-z&&[^bc]] | a-z, kivéve b és c: [ad-z] (kivonás) |
7 | [a-z&&[^m-p]] | a-tól z-ig, és nem m-től p-ig: [a-lq-z] (kivonás) |
Reguláris kifejezés Karakterosztályok Példa
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) }}Tesztelje most
Regex kvantorok
A kvantorok meghatározzák egy karakter előfordulásának számát.
Regex | Leírás |
---|---|
X? | X egyszer vagy egyáltalán nem fordul elő |
X+ | X egyszer vagy többször előfordul |
X* | X nulla vagy többször fordul elő |
X{n} | X csak n-szer fordul elő |
X{n,} | X n vagy többször fordul elő |
X{y,z} | X legalább y-szer, de z-nél kevesebbszer fordul elő |
Reguláris kifejezés Karakterosztályok és kvantorok Példa
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) }}Tesztelje most
Regex metakarakterek
A reguláris kifejezés metakarakterei rövid kódként működnek.
Regex | Leírás |
---|---|
. | Bármely karakter (lehet, hogy megegyezik a terminátorral, vagy nem) |
d | Bármilyen számjegy, rövidebb [0-9] |
D | Bármilyen nem számjegy, a [^0-9] rövidítése |
s | Bármilyen szóköz karakter, a [ x0Bf ] rövidítése |
S | Bármilyen nem szóköz karakter, a [^s] rövidítése |
Ban ben | Bármely szó karakter, az [a-zA-Z_0-9] rövidítése |
BAN BEN | Bármilyen nem szó karakter, a [^w] rövidítése |
Egy szóhatár | |
B | Nem szóhatár |
Példa a reguláris kifejezés metakaraktereire
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) }}Tesztelje most
Reguláris kifejezés 1. kérdés
/*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) }}
Tesztelje most
Reguláris kifejezés 2. kérdés
/*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) }}Tesztelje most
Java Regex Finder példa
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.'); } } } }
Kimenet:
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