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.
- Interfață MatchResult
- Clasa de potriviri
- Clasa de modele
- Clasa PatternSyntaxException
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 |
---|---|---|
1 | potriviri booleene() | testați dacă expresia regulată se potrivește cu modelul. |
2 | boolean find() | găsește următoarea expresie care se potrivește cu modelul. |
3 | găsire booleană (int start) | găsește următoarea expresie care se potrivește cu modelul de la numărul de început dat. |
4 | Grup de șiruri () | returnează subsecvența potrivită. |
5 | int start() | returnează indexul de început al subsecvenței potrivite. |
6 | intenționează() | returnează indexul final al subsecvenței potrivite. |
7 | int 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 |
---|---|---|
1 | Compilare model static (Expresia regex șir) | compilează regex-ul dat și returnează instanța modelului. |
2 | Potrivire de potrivire (intrare CharSequence) | creează un potrivire care potrivește intrarea dată cu modelul. |
3 | potriviri 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. |
4 | String[] split (intrare CharSequence) | împarte șirul de intrare dat în jurul potrivirilor modelului dat. |
5 | Model 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 caractere | Descriere |
---|---|---|
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.
Regex | Descriere |
---|---|
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.
Regex | Descriere |
---|---|
. | Orice caracter (poate să se potrivească sau nu cu terminatorul) |
d | Orice cifre, mai puțin de [0-9] |
D | Orice non-cifră, prescurtare pentru [^0-9] |
s | Orice caracter de spațiu alb, prescurtare pentru [ x0Bf ] |
S | Orice caracter fără spații albe, prescurtare pentru [^s] |
În | Orice caracter de cuvânt, prescurtare pentru [a-zA-Z_0-9] |
ÎN | Orice caracter non-cuvânt, prescurtare pentru [^w] |
O limită de cuvinte | |
B | O 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