logo

Java Regex

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.

  1. MatchResult sąsaja
  2. Matcher klasė
  3. Šablonų klasė
  4. PatternSyntaxException klasė
Java Regex API

Matcher klasė

Jis įgyvendina MatchResult sąsaja. Tai yra regex variklis kuri naudojama simbolių sekos atitikimo operacijoms atlikti.

Nr.Metodasapibūdinimas
1loginiai atitikmenys ()patikrinkite, ar reguliarioji išraiška atitinka šabloną.
2loginis radinys ()randa kitą išraišką, atitinkančią šabloną.
3loginis radinys (int pradžia)randa kitą išraišką, atitinkančią šabloną iš nurodyto pradžios skaičiaus.
4Eilučių grupė ()grąžina suderintą poseką.
5int start ()grąžina pradinį suderintos posekos indeksą.
6int end ()grąžina suderintos posekos pabaigos indeksą.
7int 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.Metodasapibūdinimas
1statinio šablono kompiliavimas (eilutės reguliarusis reiškinys)sukompiliuoja nurodytą reguliarųjį reiškinį ir grąžina šablono egzempliorių.
2Atitikties atitikmuo (CharSequence įvestis)sukuria atitikmenį, atitinkantį nurodytą įvestį su šablonu.
3statinė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.
4String[] padalijimas (CharSequence įvestis)padalija nurodytą įvesties eilutę pagal nurodyto šablono atitikmenis.
5Stygos 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ų.

Regexapibū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.

Regexapibūdinimas
.Bet koks simbolis (gali atitikti terminą arba ne)
dBet kokie skaitmenys, trumpesni nei [0-9]
DBet koks neskaitmuo, trumpinys [^0-9]
sBet koks tarpo simbolis, trumpinys [ x0Bf ]
SBet koks ne tarpo simbolis, trumpinys [^s]
InBet koks žodžio simbolis, trumpinys [a-zA-Z_0-9]
INBet koks nežodinis simbolis, trumpinys [^w]
Žodžio riba
BNe ž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