The Java Regex arba Regular Expression yra API apibrėžti eilučių paieškos arba manipuliavimo šabloną .
Jis plačiai naudojamas apibrėžiant eilutes, tokias kaip slaptažodis ir el. pašto patvirtinimas. Išmokę Java regex mokymo programą, galėsite išbandyti savo reguliariąsias išraiškas naudodami Java Regex Tester Tool.
Java Regex API suteikia 1 sąsają ir 3 klases java.util.regex paketą.
java.util.regex paketą
„Matcher“ ir „Patern“ klasės suteikia „Java“ reguliariosios išraiškos galimybę. Paketas java.util.regex pateikia šias reguliariųjų reiškinių klases ir sąsajas.
- MatchResult sąsaja
- Matcher klasė
- Šablonų klasė
- PatternSyntaxException klasė
Matcher klasė
Jis įgyvendina MatchResult sąsaja. Tai yra regex variklis kuri naudojama simbolių sekos atitikimo operacijoms atlikti.
Nr. | Metodas | apibūdinimas |
---|---|---|
1 | loginiai atitikmenys () | patikrinkite, ar reguliarioji išraiška atitinka šabloną. |
2 | loginis radinys () | randa kitą išraišką, atitinkančią šabloną. |
3 | loginis radinys (int pradžia) | randa kitą išraišką, atitinkančią šabloną iš nurodyto pradžios skaičiaus. |
4 | Eilučių grupė () | grąžina suderintą poseką. |
5 | int start () | grąžina pradinį suderintos posekos indeksą. |
6 | int end () | grąžina suderintos posekos pabaigos indeksą. |
7 | int groupCount() | grąžina bendrą suderintos posekos skaičių. |
Šablonų klasė
Tai yra sukompiliuota reguliariosios išraiškos versija . Jis naudojamas reguliaraus reiškinio variklio modeliui apibrėžti.
Nr. | Metodas | apibūdinimas |
---|---|---|
1 | statinio šablono kompiliavimas (eilutės reguliarusis reiškinys) | sukompiliuoja nurodytą reguliarųjį reiškinį ir grąžina šablono egzempliorių. |
2 | Atitikties atitikmuo (CharSequence įvestis) | sukuria atitikmenį, atitinkantį nurodytą įvestį su šablonu. |
3 | statinės loginės reikšmės atitiktys (eilutės reguliarusis reiškinys, CharSequence įvestis) | Jis veikia kaip kompiliavimo ir suderinimo metodų derinys. Jis sukompiliuoja reguliariąją išraišką ir suderina pateiktą įvestį su šablonu. |
4 | String[] padalijimas (CharSequence įvestis) | padalija nurodytą įvesties eilutę pagal nurodyto šablono atitikmenis. |
5 | Stygos raštas () | grąžina reguliarųjį reiškinį. |
Java reguliariųjų išraiškų pavyzdys
Yra trys būdai, kaip „Java“ parašyti regex pavyzdį.
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); }}Išbandykite dabar
Išvestis
true true true
Įprasta išraiška . Pavyzdys
. (taškas) reiškia vieną simbolį.
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) }}Išbandykite dabar
Regex simbolių klasės
Nr. | Charakterio klasė | apibūdinimas |
---|---|---|
1 | [abc] | a, b arba c (paprasta klasė) |
2 | [^abc] | Bet koks simbolis, išskyrus a, b arba c (neigimas) |
3 | [a-zA-Z] | nuo a iki z arba nuo A iki Z imtinai (diapazonas) |
4 | [a-d[m-p]] | nuo a iki d arba nuo m iki p: [a-dm-p] (jungtis) |
5 | [a-z&&[def]] | d, e arba f (sankirta) |
6 | [a-z&&[^bc]] | nuo a iki z, išskyrus b ir c: [ad-z] (atimtis) |
7 | [a-z&&[^m-p]] | nuo a iki z, o ne nuo m iki p: [a-lq-z] (atimtis) |
Reguliariųjų reiškinių simbolių klasės Pavyzdys
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) }}Išbandykite dabar
Reguliarūs kiekiai
Kiekybininkai nurodo simbolio pasikartojimų skaičių.
Regex | apibūdinimas |
---|---|
X? | X pasitaiko vieną kartą arba neįvyksta iš viso |
X+ | X pasitaiko vieną ar daugiau kartų |
X* | X pasitaiko nulį ar daugiau kartų |
X{n} | X pasitaiko tik n kartų |
X{n,} | X pasitaiko n ar daugiau kartų |
X{y,z} | X pasitaiko bent y kartų, bet mažiau nei z kartų |
Reguliariųjų reiškinių simbolių klasės ir kvantoriai Pavyzdys
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) }}Išbandykite dabar
Regex metasimboliai
Reguliariosios išraiškos metasimboliai veikia kaip trumpieji kodai.
Regex | apibūdinimas |
---|---|
. | Bet koks simbolis (gali atitikti terminą arba ne) |
d | Bet kokie skaitmenys, trumpesni nei [0-9] |
D | Bet koks neskaitmuo, trumpinys [^0-9] |
s | Bet koks tarpo simbolis, trumpinys [ x0Bf ] |
S | Bet koks ne tarpo simbolis, trumpinys [^s] |
In | Bet koks žodžio simbolis, trumpinys [a-zA-Z_0-9] |
IN | Bet koks nežodinis simbolis, trumpinys [^w] |
Žodžio riba | |
B | Ne žodžio riba |
Reguliariosios išraiškos metasimbolių pavyzdys
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) }}Išbandykite dabar
Reguliariosios išraiškos 1 klausimas
/*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) }}
Išbandykite dabar
Reguliariosios išraiškos 2 klausimas
/*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) }}Išbandykite dabar
Java Regex ieškiklio pavyzdys
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.'); } } } }
Išvestis:
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