Java Regex

Java Regex

The Java Regex или регулярният израз е API за дефинирайте шаблон за търсене или манипулиране на низове .

Той се използва широко за дефиниране на ограничението върху низове като валидиране на парола и имейл. След като научите урока за Java regex, ще можете да тествате своите регулярни изрази с инструмента за тестване на Java Regex.

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 интерфейс. Това е regex двигател който се използва за извършване на операции за съпоставяне на последователност от знаци.

Не. Метод Описание
1 булеви съвпадения() тествайте дали регулярният израз съответства на шаблона.
2 булево намиране () намира следващия израз, който отговаря на шаблона.
3 булево намиране (начало на int) намира следващия израз, който съответства на шаблона от даденото начално число.
4 Група низове () връща съответстващата подпоследователност.
5 int start() връща началния индекс на съответстващата подпоследователност.
6 int end() връща крайния индекс на съответстващата подпоследователност.
7 int groupCount() връща общия брой на съответстващата подпоследователност.

Клас на модела

Това е компилирана версия на регулярен израз . Използва се за дефиниране на шаблон за механизма на регулярни изрази.

Не. Метод Описание
1 компилиране на статичен шаблон (регулярен израз на низ) компилира дадения регулярен израз и връща екземпляра на модела.
2 Съпоставяне на съвпадение (вход на CharSequence) създава съвпадение, което съвпада с дадения вход с шаблона.
3 статични булеви съвпадения (регулярен израз на низ, въвеждане на CharSequence) Работи като комбинация от методи за компилиране и съвпадение. Той компилира регулярния израз и съпоставя дадения вход с шаблона.
4 Разделяне на низ [] (вход на 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) }}  
Тествайте сега

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

Кванторите определят броя на срещанията на даден знак.

Regex Описание
Х? 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) }}  
Тествайте сега

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

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

Regex Описание
. Всеки знак (може или не може да съвпада с терминатора)
д Всякакви цифри, различни от [0-9]
Д Всички нецифрени, съкращение от [^0-9]
с Всеки празен знак, съкращение от [ x0Bf ]
С Всеки знак без празно пространство, съкращение от [^s]
In Всяка дума, съкратено от [a-zA-Z_0-9]
IN Всеки знак, който не е дума, съкращение от [^w]
 Граница на думата
Б Граница без думи

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

 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 Regex

 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