У Java регулярні вирази або регулярні вирази (скорочено) у Java — це API для визначення шаблонів рядків, які можна використовувати для пошуку, маніпулювання та редагування рядка в Java. Перевірка електронної пошти та паролі – це кілька областей рядків, де Regex широко використовується для визначення обмежень. Регулярні вирази в Java представлені в розділі java.util.regex пакет. Це складається з 3 класи і 1 інтерфейс . The java.util.regex Пакет переважно складається з наступних трьох класів, як показано нижче у форматі таблиці:
Класи регулярних виразів та інтерфейси
Regex у Java надає 3 класи та 1 інтерфейс, які є такими:
- Клас шаблону
- Матчер-клас
- Клас PatternSyntaxException
- Інтерфейс MatchResult
Більше розуміння можна витлумачити з наведеного нижче зображення так:
| Так ні. | Клас/Інтерфейс | опис |
|---|---|---|
| 1. | Клас шаблону | Використовується для визначення шаблонів |
| 2. | Матчер-клас | Використовується для виконання операцій зіставлення з текстом за допомогою шаблонів |
| 3. | Клас PatternSyntaxException | Використовується для вказівки синтаксичної помилки в шаблоні регулярного виразу |
| 4. | Інтерфейс MatchResult | Використовується для представлення результату операції збігу |
Клас шаблону
Цей клас є компіляцією регулярних виразів, які можна використовувати для визначення різних типів шаблонів, не надаючи публічних конструкторів. Це можна створити, викликавши метод compile(), який приймає регулярний вираз як перший аргумент, таким чином повертаючи шаблон після виконання.
| Так ні. | метод | опис |
|---|---|---|
| 1. | компілювати (рядковий регулярний вираз) | Він використовується для компіляції даного регулярного виразу в шаблон. |
| 2. | компілювати (рядковий регулярний вираз, прапорці int) | Він використовується для компіляції даного регулярного виразу в шаблон із заданими прапорцями. |
| 3. | прапори() | Він використовується для повернення прапорів відповідності цього шаблону. |
| 4. | matcher (введення CharSequence) | Він використовується для створення відповідника, який відповідатиме заданому введенню цьому шаблону. |
| 5. | відповідає (рядковий регулярний вираз, вхід CharSequence) | Він використовується для компіляції заданого регулярного виразу та намагається зіставити заданий вхід із ним. |
| 6. | візерунок() | Він використовується для повернення регулярного виразу, з якого було скомпільовано цей шаблон. |
| 7. | цитата (рядок s) | Він використовується для повернення літерального шаблону String для вказаного String. |
| 8. | split (введення CharSequence) | Він використовується для розбиття заданої вхідної послідовності навколо збігів цього шаблону. |
| 9. | split(CharSequence input, int limit) | Він використовується для розбиття заданої вхідної послідовності навколо збігів цього шаблону. Параметр limit контролює кількість разів застосування візерунка. |
| 10. | toString() | Він використовується для повернення рядкового представлення цього шаблону. |
приклад: Клас шаблону
Java
gimp змінює колір
// Java Program Demonstrating Working of matches() Method> // Pattern class> // Importing Pattern class from java.util.regex package> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Following line prints 'true' because the whole> >// text 'geeksforgeeks' matches pattern> >// 'geeksforge*ks'> >System.out.println(Pattern.matches(> >'geeksforge*ks'>,>'geeksforgeeks'>));> >// Following line prints 'false' because the whole> >// text 'geeksfor' doesn't match pattern 'g*geeks*'> >System.out.println(> >Pattern.matches(>'g*geeks*'>,>'geeksfor'>));> >}> }> |
>
>Вихід
true false>
Матчер клас
Цей об’єкт використовується для виконання операцій збігу для вхідного рядка в Java, таким чином інтерпретуючи пояснені раніше шаблони. Це також визначає відсутність відкритих конструкторів. Це можна реалізувати, викликавши matcher() для будь-якого об’єкта шаблону.
| Так ні. | метод | опис |
|---|---|---|
| 1. | знайти() | Він в основному використовується для пошуку кількох входжень регулярних виразів у тексті. |
| 2. | знайти (початок int) | Використовується для пошуку регулярних виразів у тексті, починаючи з заданого індексу. |
| 3. | початок() | Він використовується для отримання початкового індексу збігу, який знайдено за допомогою методу find(). |
| 4. | кінець() | Він використовується для отримання кінцевого індексу збігу, який знайдено за допомогою методу find(). Він повертає індекс символу, що стоїть поруч із останнім відповідним символом. |
| 5. | groupCount() | Він використовується для знаходження загальної кількості відповідної підпослідовності. |
| 6. | група() | Він використовується для пошуку відповідної підпослідовності. |
| 7. | матчі() | Він використовується для перевірки відповідності регулярного виразу шаблону. |
Примітка: T Pattern.matches() перевіряє, чи збігається весь текст із шаблоном чи ні. Інші методи (продемонстровані нижче) в основному використовуються для пошуку кількох повторень шаблонів у тексті.
Давайте обговоримо кілька прикладів програм, як ми робили для класу Pattern. Тут ми обговоримо кілька програм Java, які демонструють роботу compile(), find(), start(), end() і split(), щоб краще зрозуміти клас Matcher.
Приклад 1: Пошук шаблонів
Java
// Java program to demonstrate working of> // String matching in Java> // Importing Matcher and Pattern class> import> java.util.regex.Matcher;> import> java.util.regex.Pattern;> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String args[])> >{> >// Create a pattern to be searched> >// Custom pattern> >Pattern pattern = Pattern.compile(>'geeks'>);> >// Search above pattern in 'techcodeview.com> | опис |
|---|---|
| [xyz] | x,y або z |
| [^xyz] | Будь-які символи, крім x, y або z |
| [a-zA-Z] | символи від a до z або від a до z. |
| [a-f[m-t]] | Об’єднання a до f і m до t. |
| [a-z && p-y] | Весь діапазон елементів перетинає два діапазони |
| [a-z && [^bc]] | об’єднання від a до z, крім b і c |
| [a-z && [^m-p]] | a до z об’єднання з винятком діапазону m до p |
Нижче наведено реалізацію вищезазначеної теми:
Java
// Java Program to check on Regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checks if the string matches with the regex> >// Should be single character a to z> >System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));> >// Check if the element is range a to z or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]'>,>'Gfg'>));> >}> }> |
css жирний
>
>Вихід
true false>
Метасимволи регулярного виразу
| Регулярний вираз | опис |
|---|---|
| X? | X з'являється один раз чи ні |
| X+ | X з'являється один або кілька разів |
| X* | X з’являється нулем або жодного разу |
| X{n} | X з'являється n разів |
| X{n,} | X з'являється n разів або більше ніж n |
| X{n,m} | X виглядає більше ніж дорівнює в n разів і менше ніж у m разів. |
Нижче наведено реалізацію метасимволів Regex:
Java
// Java Program to check on regex> import> java.io.*;> import> java.util.regex.*;> // Driver class> class> GFG {> >// Main function> >public> static> void> main(String[] args)> >{> >// Checking all the strings using regex> >System.out.println(Pattern.matches(>'[b-z]?'>,>'a'>));> >// Check if all the elements are in range a to z> >// or A to Z> >System.out.println(> >Pattern.matches(>'[a-zA-Z]+'>,>'GfgTestCase'>));> >// Check if elements is not in range a to z> >System.out.println(Pattern.matches(>'[^a-z]?'>,>'g'>));> >// Check if all the elements are either g,e,k or s> >System.out.println(> >Pattern.matches(>'[geks]*'>,>'geeksgeeks'>));> >}> }> |
>
>Вихід
false true false true>
Приклад пошуку регулярних виразів Java
| Регулярний вираз | опис |
|---|---|
| . алгоритм для RSA | Будь-який персонаж |
| d | Будь-які цифри, [0-9] |
| D | Будь-який нецифровий, [^0-9] |
| s | Пробіл, [ x0Bf ] |
| S | Не пробільний символ, [^s] |
| В | Символ слова, [a-zA-Z_0-9] |
| IN | Символ, що не є словом, [^w] |
|
| Кордон слова |
| B | Не межа слів |
Нижче наведено реалізацію Java Regex Finder:
Java
// Java Program to implement regex> import> java.io.*;> import> java.util.regex.*;> // Driver Class> class> GFG {> >// Main Function> >public> static> void> main(String[] args)> >{> >// Check if all elements are numbers> >System.out.println(Pattern.matches(>'d+'>,>'1234'>));> >// Check if all elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'1234'>));> >// Check if all the elements are non-numbers> >System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));> >// Check if all the elements are non-spaces> >System.out.println(Pattern.matches(>'S+'>,>'gfg'>));> >}> }> |
>
>Вихід
true false true true>
Висновок
Нарешті, давайте обговоримо деякі з важливих спостережень, отриманих із наведеної вище статті
- Ми створюємо об’єкт шаблону, викликаючи Pattern.compile(), конструктора немає. compile() — це статичний метод у класі Pattern.
- Як і вище, ми створюємо об’єкт Matcher за допомогою matcher() для об’єктів класу Pattern.
- Pattern.matches() також є статичним методом, який використовується для перевірки відповідності даного тексту шаблону чи ні.
- find() використовується для пошуку кількох повторень шаблонів у тексті.
- Ми можемо розділити текст на основі шаблону розділювача за допомогою методу split().
Поширені запитання про Java Regex
Q1. Що таке регулярні вирази в Java?
років:
Регулярні вирази в Java використовуються для шаблонів рядків, які можна використовувати для пошуку, маніпулювання та редагування рядка в Java.
Q2. Який простий приклад регулярного виразу в Java?
років:
Нижче наведено простий приклад регулярного виразу в Java:
Java
// Java Program to check on Regex>import>java.io.*;>import>java.util.regex.*;>// Driver class>class>GFG {>>// Main function>>public>static>void>main(String[] args)>>{>>// Checks if the string matches with the regex>>// Should be single character a to z>>System.out.println(Pattern.matches(>'[a-z]'>,>'g'>));>>// Check if all the elements are non-numbers>>System.out.println(Pattern.matches(>'D+'>,>'Gfg'>));>>// Check if all the elements are non-spaces>>System.out.println(Pattern.matches(>'S+'>,>'gfg'>));>>}>}>>java викидає виняток>Вихідtrue true true>