logo

Java Regex

The Java Regex sau Regular Expression este un API pentru definiți un model pentru căutarea sau manipularea șirurilor .

Este utilizat pe scară largă pentru a defini constrângerile asupra șirurilor de caractere, cum ar fi validarea parolei și a e-mailului. După ce ați învățat tutorialul Java regex, veți putea să vă testați expresiile regulate cu Java Regex Tester Tool.

Java Regex API oferă 1 interfață și 3 clase în java.util.regex pachet.

pachetul java.util.regex

Clasele Matcher și Pattern oferă facilitatea expresiei regulate Java. Pachetul java.util.regex oferă următoarele clase și interfețe pentru expresiile regulate.

  1. Interfață MatchResult
  2. Clasa de potriviri
  3. Clasa de modele
  4. Clasa PatternSyntaxException
API-ul Java Regex

Clasa de potriviri

Acesta implementează MatchResult interfata. Este un motor regex care este folosit pentru a efectua operații de potrivire pe o secvență de caractere.

Nu.MetodăDescriere
1potriviri booleene()testați dacă expresia regulată se potrivește cu modelul.
2boolean find()găsește următoarea expresie care se potrivește cu modelul.
3găsire booleană (int start)găsește următoarea expresie care se potrivește cu modelul de la numărul de început dat.
4Grup de șiruri ()returnează subsecvența potrivită.
5int start()returnează indexul de început al subsecvenței potrivite.
6intenționează()returnează indexul final al subsecvenței potrivite.
7int groupCount()returnează numărul total al subsecvenței potrivite.

Clasa de modele

Este versiunea compilată a unei expresii regulate . Este folosit pentru a defini un model pentru motorul regex.

Nu.MetodăDescriere
1Compilare model static (Expresia regex șir)compilează regex-ul dat și returnează instanța modelului.
2Potrivire de potrivire (intrare CharSequence)creează un potrivire care potrivește intrarea dată cu modelul.
3potriviri booleene statice (String regex, intrare CharSequence)Funcționează ca o combinație de metode de compilare și potrivire. Compilează expresia regulată și potrivește intrarea dată cu modelul.
4String[] split (intrare CharSequence)împarte șirul de intrare dat în jurul potrivirilor modelului dat.
5Model de șiruri ()returnează modelul regex.

Exemplu de expresii regulate Java

Există trei moduri de a scrie exemplul regex în 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); }} 
Testează-l acum

Ieșire

 true true true 

Expresie uzuala . Exemplu

. (punct) reprezintă un singur caracter.

 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) }} 
Testează-l acum

Clase de caractere Regex

Nu.Clasa de caractereDescriere
1[abc]a, b sau c (clasa simplă)
2[^abc]Orice caracter, cu excepția a, b sau c (negație)
3[a-zA-Z]de la a la z sau de la A la Z, inclusiv (interval)
4[a-d[m-p]]de la a la d, sau de la m la p: [a-dm-p] (unire)
5[a-z&&[def.]]d, e sau f (intersecție)
6[a-z&&[^bc]]de la a la z, cu excepția b și c: [ad-z] (scădere)
7[a-z&&[^m-p]]de la a la z, și nu de la m la p: [a-lq-z] (scădere)

Expresie regulată Clase de caractere Exemplu

 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) }} 
Testează-l acum

Cuantificatori Regex

Cuantificatorii specifică numărul de apariții ale unui caracter.

RegexDescriere
X?X apare o dată sau deloc
X+X apare o dată sau de mai multe ori
X*X apare de zero sau de mai multe ori
X{n}X apare doar de n ori
X{n,}X apare de n sau de mai multe ori
X{y,z}X apare de cel puțin de y ori, dar de mai puțin de z ori

Expresie regulată Clase de caractere și Exemplu de cuantificatori

 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) }} 
Testează-l acum

Metacaracterele Regex

Metacaracterele expresiei regulate funcționează ca coduri scurte.

RegexDescriere
.Orice caracter (poate să se potrivească sau nu cu terminatorul)
dOrice cifre, mai puțin de [0-9]
DOrice non-cifră, prescurtare pentru [^0-9]
sOrice caracter de spațiu alb, prescurtare pentru [ x0Bf ]
SOrice caracter fără spații albe, prescurtare pentru [^s]
ÎnOrice caracter de cuvânt, prescurtare pentru [a-zA-Z_0-9]
ÎNOrice caracter non-cuvânt, prescurtare pentru [^w]
O limită de cuvinte
BO limită fără cuvinte

Metacaractere de expresie regulată Exemplu

 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) }} 
Testează-l acum

Întrebarea de expresie regulată 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) }} 

Testează-l acum

Întrebarea de expresie regulată 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) }} 
Testează-l acum

Exemplu 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.'); } } } } 

Ieșire:

 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