logo

Регулярний вираз Java

The Регулярний вираз Java або регулярний вираз є API для визначити шаблон для пошуку або маніпулювання рядками .

Він широко використовується для визначення обмежень на такі рядки, як пароль і перевірка електронної пошти. Ознайомившись з підручником з регулярними виразами Java, ви зможете перевірити свої регулярні вирази за допомогою інструмента перевірки регулярних виразів Java.

Java Regex API надає 1 інтерфейс і 3 класи java.util.regex пакет.

пакет java.util.regex

Класи Matcher і Pattern забезпечують можливість регулярного виразу Java. Пакет java.util.regex надає наступні класи та інтерфейси для регулярних виразів.

  1. Інтерфейс MatchResult
  2. Матчер клас
  3. Клас шаблону
  4. Клас PatternSyntaxException
Java Regex API

Матчер клас

Він реалізує MatchResult інтерфейс. Це двигун регулярних виразів який використовується для виконання операцій зіставлення з послідовністю символів.

Немає.методопис
1логічні збіги()перевірити, чи відповідає регулярний вираз шаблону.
2логічне значення find()знаходить наступний вираз, який відповідає шаблону.
3логічний пошук (початок int)знаходить наступний вираз, який відповідає шаблону з заданого початкового числа.
4Група рядків()повертає відповідну підпослідовність.
5int start()повертає початковий індекс зіставленої підпослідовності.
6int end()повертає кінцевий індекс відповідної підпослідовності.
7int groupCount()повертає загальну кількість зіставленої підпослідовності.

Клас шаблону

Це скомпільована версія регулярного виразу . Він використовується для визначення шаблону механізму регулярних виразів.

Немає.методопис
1компіляція статичного шаблону (рядковий регулярний вираз)компілює заданий регулярний вираз і повертає екземпляр шаблону.
2Зіставник (введення CharSequence)створює відповідник, який відповідає заданому введенню шаблону.
3статичні логічні збіги (рядковий регулярний вираз, вхід CharSequence)Він працює як комбінація методів компіляції та зіставлення. Він компілює регулярний вираз і зіставляє заданий вхід із шаблоном.
4String[] split (введення CharSequence)розбиває даний вхідний рядок навколо збігів заданого шаблону.
5Рядковий шаблон()повертає шаблон регулярного виразу.

Приклад регулярних виразів Java

Є три способи написати приклад регулярного виразу на 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); }} 
Перевірте зараз

Вихід

 true true true 

Регулярний вираз. приклад

. (крапка) позначає один символ.

 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) }} 
Перевірте зараз

Класи символів Regex

Немає.Клас символівопис
1[abc]a, b або c (простий клас)
2[^abc]Будь-який символ, крім a, b або c (заперечення)
3[a-zA-Z]від a до z або від A до Z включно (діапазон)
4[a-d[m-p]]від a до d або від m до p: [a-dm-p] (об’єднання)
5[a-z&&[def]]d, e або f (перетин)
6[a-z&&[^bc]]від a до z, крім b і c: [ad-z] (віднімання)
7[a-z&&[^m-p]]від a до z, а не від m до p: [a-lq-z](віднімання)

Приклад класів символів регулярних виразів

 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) }} 
Перевірте зараз

Квантори регулярного виразу

Квантори вказують кількість входжень символу.

Регулярний виразопис
X?X зустрічається один раз або не зустрічається взагалі
X+X зустрічається один або кілька разів
X*X зустрічається нуль або більше разів
X{n}X зустрічається лише n разів
X{n,}X зустрічається n або більше разів
X{y,z}X зустрічається принаймні y разів, але менше z разів

Класи символів регулярного виразу та приклад кванторів

 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) }} 
Перевірте зараз

Метасимволи регулярного виразу

Метасимволи регулярного виразу працюють як короткі коди.

Регулярний виразопис
.Будь-який символ (може або не може відповідати термінатору)
dБудь-які цифри, крім [0-9]
DБудь-яка нецифра, скорочення від [^0-9]
sБудь-який пробіл, скорочення від [ x0Bf ]
SБудь-який непробільний символ, скорочення від [^s]
ВБудь-який символ слова, скорочення від [a-zA-Z_0-9]
INБудь-який символ, що не є словом, скорочення від [^w]
Кордон слова
BНе межа слів

Приклад метасимволів регулярного виразу

 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) }} 
Перевірте зараз

Питання щодо регулярного виразу 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) }} 

Перевірте зараз

Запитання щодо регулярного виразу 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) }} 
Перевірте зараз

Приклад пошуку регулярних виразів Java

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

Вихід:

 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