Тхе Јава Регек или Регуларни израз је АПИ за дефинише образац за претрагу или манипулацију стринговима .
Широко се користи за дефинисање ограничења стрингова као што су лозинка и валидација е-поште. Након што научите водич за Јава регек, моћи ћете да тестирате своје регуларне изразе помоћу алатке Јава Регек Тестер.
Јава Регек АПИ пружа 1 интерфејс и 3 класе у јава.утил.регек пакет.
јава.утил.регек пакет
Класе Матцхер и Паттерн пружају могућност Јава регуларног израза. Пакет јава.утил.регек обезбеђује следеће класе и интерфејсе за регуларне изразе.
- Интерфејс МатцхРесулт
- Матцхер цласс
- Паттерн цласс
- ПаттернСинтакЕкцептион класа
Матцхер цласс
Она имплементира МатцхРесулт интерфејс. То је регек енгине који се користи за обављање операција подударања над низом знакова.
Не. | Метод | Опис |
---|---|---|
1 | боолеан матцхес() | тестирати да ли се регуларни израз поклапа са шаблоном. |
2 | боолеан финд() | проналази следећи израз који одговара шаблону. |
3 | боолеан финд(инт старт) | проналази следећи израз који одговара шаблону из датог почетног броја. |
4 | Стринг гроуп() | враћа подниз који се подудара. |
5 | инт старт() | враћа почетни индекс подударног низа. |
6 | Намеравам() | враћа завршни индекс подударног низа. |
7 | инт гроупЦоунт() | враћа укупан број подударног низа. |
Паттерн цласс
То је компајлирана верзија регуларног израза . Користи се за дефинисање шаблона за регек мотор.
Не. | Метод | Опис |
---|---|---|
1 | компајлирање статичког узорка (регекс низа) | компајлира дати регуларни израз и враћа инстанцу узорка. |
2 | Упаривач подударања (унос знаковне секвенце) | креира упаривач који одговара датом улазу са шаблоном. |
3 | статичка логичка подударања (редовни израз стринга, унос секвенце знакова) | Ради као комбинација метода компајлирања и упаривања. Он компајлира регуларни израз и поклапа дати унос са шаблоном. |
4 | Стринг[] сплит (унос низа знакова) | дели дати улазни низ око подударања датог узорка. |
5 | Образац низа() | враћа образац регуларног израза. |
Пример Јава регуларних израза
Постоје три начина за писање примера редовног израза у Јави.
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) }}Тестирајте одмах
Класе редовних знакова
Не. | Цхарацтер Цласс | Опис |
---|---|---|
1 | [абц] | а, б или ц (једноставна класа) |
2 | [^абц] | Било који знак осим а, б или ц (негација) |
3 | [а-зА-З] | од а до з или од А до З, укључујући (опсег) |
4 | [а-д[м-п]] | од а до д, или од м до п: [а-дм-п] (унија) |
5 | [а-з&&[деф]] | д, е или ф (пресек) |
6 | [а-з&&[^бц]] | од а до з, осим за б и ц: [ад-з] (одузимање) |
7 | [а-з&&[^м-п]] | а до з, а не м до п: [а-лк-з](одузимање) |
Класе знакова регуларног израза Пример
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) }}Тестирајте одмах
Квантификатори редовних израза
Квантификатори одређују број појављивања карактера.
Регек | Опис |
---|---|
ИКС? | Кс се јавља једном или уопште не |
Кс+ | Кс се јавља једном или више пута |
ИКС* | Кс се јавља нула или више пута |
Кс{н} | Кс се јавља само н пута |
Кс{н,} | Кс се јавља н или више пута |
Кс{и,з} | Кс се јавља најмање и пута, али мање од з пута |
Класе карактера регуларног израза и пример квантификатора
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) }}Тестирајте одмах
Регек Метацхарацтерс
Метазнакови регуларног израза раде као кратки кодови.
Регек | Опис |
---|---|
. | Било који знак (може или не мора да одговара терминатору) |
д | Било које цифре, осим [0-9] |
Д | Било која нецифра, скраћено за [^0-9] |
с | Било који знак размака, скраћеница од [тнк0Бфр] |
С | Било који знак без размака, скраћеница од [^с] |
Ин | Знак било које речи, скраћено за [а-зА-З_0-9] |
ИН | Било који знак који није реч, скраћено од [^в] |
б | Граница речи |
Б | Граница која није реч |
Пример метазнака регуларног израза
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) }}Тестирајте одмах
Пример Јава Регек Финдер-а
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