java regex tutorial with regular expression examples
Ово упутство за Јава Регек објашњава шта је Регуларни израз у Јави, зашто нам је потребан и како га користити уз помоћ примера редовног израза:
ДО регуларни израз на Јави која је скраћено „ регуларни израз ”Је израз који се користи за дефинисање узорка претраживања низова.
Узорак за претрагу може бити једноставан знак или подниз или може бити сложени низ или израз који дефинише одређени образац који се тражи у низу.
Даље, образац ће можда морати да се подудара један или више пута са низом.
=> Посетите овде да бисте видели серију Јава обуке за све.
Шта ћете научити:
Регуларни израз: зашто нам је потребан
Регуларни израз се углавном користи за тражење узорка у низу. Зашто тражимо образац у низу? Можда бисмо желели да пронађемо одређени образац у низу, а затим манипулишемо или уредимо.
Дакле, у рачунарској апликацији можемо непрекидно захтевати манипулацију различитим обрасцима. Због тога нам је увек потребан регуларни израз како би се олакшало тражење узорка.
Сада када је дат образац за тражење, како тачно функционише регуларни израз?
Када анализирамо и изменимо текст помоћу регуларног израза, кажемо да смо „применили регуларни израз на низ или текст“. Оно што ми радимо је да применимо образац на текст у смеру „слева удесно“ и изворни низ се подудара са узорком.
На пример, размотрите низ „ абабабабаб ”. Претпоставимо да је дефинисан регуларни израз „аба“. Дакле, сада морамо да применимо овај регуларни израз на низ. Примењујући регуларни израз с лева на десно, регуларни израз ће одговарати низу „ аба_аба___ ”, На два места.
Дакле, када се изворни знак користи у утакмици, не можемо га поново користити. Стога, након проналаска првог подударања аба, трећи знак „а“ није поново коришћен.
како отворити свф датотеке на Виндовсима
јава.утил.регек
Јава језик не пружа ниједну уграђену класу за регуларни израз. Али са регуларним изразима можемо радити увозом „ јава.утил.регек ”Пакет.
Пакет јава.утил.регек пружа један интерфејс и три класе као што је приказано доле:
Класа узорка: Класа узорка представља састављени регуларни израз. Класа Паттерн нема ниједан јавни конструктор, али пружа статичке методе цомпиле () које враћају Паттерн објекте и могу се користити за стварање узорка.
Матцхер Цласс: Објекат класе Матцхер подудара се са регуларним изразом са низом. Попут класе Паттерн, и ова класа не нуди никакве јавне конструкторе. Пружа метод матцхер () који враћа Матцхер објекат.
ПаттернСинтакЕкцептион: Ова класа дефинише непроверени изузетак. Објект типа ПаттернСинтакЕкцептион враћа непроверени изузетак који указује на синтаксну грешку у регуларном узорку.
МатцхРесулт Интерфаце: МатцхРесулт интерфејс одређује резултат подударања регуларног израза.
Пример Јава Регек-а
Применимо једноставан пример регуларног израза у Јави. У доњем програму имамо једноставни низ као образац, а затим га подударамо са низом. Излаз исписује почетни и крајњи положај у низу у којем се налази образац.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String args()) { //define a pattern to be searched Pattern pattern = Pattern.compile('Help.'); // Search above pattern in 'softwareTestingHelp.com' Matcher m = pattern.matcher('softwareTestingHelp.com'); // print the start and end position of the pattern found while (m.find()) System.out.println('Pattern found from position ' + m.start() + ' to ' + (m.end()-1)); } }
Излаз:
Образац пронађен од 15 до 19
Регек Матцхер у Јави
Класа подударања имплементира МатцхРесулт интерфејс. Матцхер делује као регуларни израз и користи се за тачно подударање низа знакова.
Доље су дате уобичајене методе класе Матцхер. Има више метода, али у наставку смо навели само важне методе.
Немој | Метод | Опис |
---|---|---|
7 | инт старт () | Даје почетни индекс подударне подсеквенце и враћа га. |
1 | логичка поклапања () | Проверава да ли регуларни израз одговара обрасцу. |
два | Узорак узорка () | Враћа образац који подударач тумачи. |
3 | боолеан финд () | Ова метода проналази следећи израз који се подудара са узорком. |
4 | логичко проналажење (инт старт) | Исто као и финд (), али проналази израз који се подудара са датим почетним положајем. |
5 | Низовна група () | Приказује подсеквенцу која одговара обрасцу. |
6 | Низовна група (назив низа) | Даје улазну подредност. Ово се снима у ранијој операцији подударања хватањем групе са наведеним именом. |
8 | Намеравам() | Враћа крајњу позицију / индекс подударне подсеквенце. |
9 | инт гроупЦоунт () | Врати укупан број подударних подсеквенци. |
10 | Стринг реплацеАлл (замена низа) | Замените све подсеквенце улазне секвенце које се подударају са узорком датим заменљивим низом. |
Једанаест | Стринг реплацеФирст (Стринг реплаце) | Замените прву подударну подсеквенцу улазне секвенце наведеним заменљивим низом. |
12 | Стринг тоСтринг () | Врати приказ низа тренутног подударања. |
Пример примене редовног израза
Погледајмо пример употребе неких од ових метода.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class MatcherDemo { public static void main(String() args) { String inputString = 'She sells sea shells on the sea shore with shells'; //obtain a Pattern object Pattern pattern = Pattern.compile('shells'); // obtain a matcher object System.out.println('input string: ' + inputString); Matcher matcher = pattern.matcher(inputString); inputString = matcher.replaceFirst('pearls'); System.out.println('
replaceFirst method:' + inputString); //use replaceAll method to replace all occurrences of pattern inputString = matcher.replaceAll('pearls'); System.out.println('
replaceAll method:' + inputString); } }
Излаз:
улазни низ: Шкољкама продаје морске шкољке на обали мора
реплацеФирст метода: Шкољкама продаје морске бисере на морској обали
реплацеАлл метода: Продаје морске бисере на морској обали са бисерима
како додати вредности низу јава
Регек класа узорка у Јави
Класа образац дефинише образац за регуларни израз, који се затим може користити за подударање са улазним низом.
Следећа табела приказује методе које пружа класа Паттерн која се обично користи.
Немој | Метод | Опис |
---|---|---|
7 | Стринг () сплит (ЦхарСекуенце инпут, инт лимит) | Улазни низ подељен је око поклапања пронађених датим узорком. |
1 | статичка компилација узорака (Стринг регек) | Приказује компајлирани приказ регуларног израза. |
два | статичка компилација узорка (Стринг регек, инт заставе) | Саставља дати реггекс користећи одређене заставице и образац за враћање. |
3 | Подудара се са подударањима (унос ЦхарСекуенце) | Враћа подударање подударањем секвенце уноса са узорком. |
4 | статичка логичка поклапања (регуларни израз низа, унос ЦхарСекуенце) | Саставља дати регуларни израз и поклапа образац са датим улазом. |
5 | инт флагс () | Приказује заставице узорка са којим се врши подударање. |
6 | Стринг () сплит (ЦхарСекуенце инпут) | Улазни низ подељен је око поклапања пронађених датим узорком. |
8 | Узорак низа () | Враћа образац регуларног израза. |
9 | статични цитат низа (низ) | Враћа дословни низ (образац) за дати низ. |
10 | Стринг тоСтринг () | Набавите стринг приказ шаблона. |
Пример у наставку користи неке од горе наведених метода класе Паттерн.
import java.util.regex.*; public class Main { public static void main(String() args) { // define a REGEX String String REGEX = 'Test'; // string to be searched for given pattern String actualString = 'Welcome to SoftwareTestingHelp portal'; // generate a pattern for given regex using compile method Pattern pattern = Pattern.compile(REGEX); // set limit to 2 int limit = 2; // use split method to split the string String() array = pattern.split(actualString, limit); // print the generated array for (int i = 0; i Излаз:
арраи (0) = Добродошли у софтвер
низ (1) = портал ингХелп
У горе наведеном програму користимо метод компајлирања за генерисање узорка. Затим раздвојимо улазни низ око овог узорка и читамо га у низ. На крају, приказујемо низ који је генерисан као резултат поделе улазног низа.
Регек метода подударања низа
Видјели смо методу Стринг.Цонтаинс () у нашим водичима за низ. Ова метода враћа логичку вредност тачно или нетачно у зависности од тога да ли низ садржи наведени знак или не.
Слично томе, имамо методу „матцх ()“ да бисмо проверили да ли се низ подудара са регуларним изразом или регуларним изразом. Ако се низ подудара са наведеним регуларним изразом, тада се враћа истинска вредност или се враћа фалсе.
Општа синтакса методе матцх ():
public boolean matches (String regex)
Ако наведени регуларни израз није важећи, тада се баца „ПаттернСинтакЕкцептион“.
Применимо програм за демонстрацију употребе методе матцх ().
public class MatchesExample{ public static void main(String args()){ String str = new String('Java Series Tutorials'); System.out.println('Input String: ' + str); //use matches () method to check if particular regex matches to the given input System.out.print('Regex: (.*)Java(.*) matches string? ' ); System.out.println(str.matches('(.*)Java(.*)')); System.out.print('Regex: (.*)Series(.*) matches string? ' ); System.out.println(str.matches('(.*)Series(.*)')); System.out.print('Regex: (.*)Series(.*) matches string? ' ); System.out.println(str.matches('(.*)String(.*)')); System.out.print('Regex: (.*)Tutorials matches string? ' ); System.out.println(str.matches('(.*)Tutorials')); } }
Излаз:
Улазни низ: Водичи за Јава серију
Редовни израз: (. *) Јава (. *) Се подудара са низом? истинито
Редовни израз: (. *) Серија (. *) Се подудара са низом? истинито
Редовни израз: (. *) Серија (. *) Се подудара са низом? лажно
Редовни израз: (. *) Туториали се подударају са низом? истинито
У Јава користимо пуно специјалних знакова и Метазнакова са регуларним изразима. Такође користимо многе класе знакова за подударање образаца. У овом одељку ћемо дати табеле које садрже класе знакова, мета знакове и квантификаторе који се могу користити са регуларним изразом.
Регек класе карактера
Немој Класа карактера Опис 7 (а-з && (^ м-п)) Одузимање: а до з, а не м до п: (а-лк-з) 1 (пкр) п, к или р два (^ пкр) Негација: Било који знак осим п, к или р 3 (а-зА-З) Распон: а до з или А до З, укључујући 4 (а-д (м-п)) Спајање: а до д, или м до п: (а-дм-п) 5 (а-з && (деф)) Пресек: д, е или ф 6 (а-з && (^ бц)) Одузимање: од а до з, осим за б и ц: (ад-з)
Регек квантификатори
Квантификатори се користе за одређивање броја појављивања знака у регуларном изразу.
Следећа табела приказује уобичајене регек квантификаторе који се користе у Јави.
Немој Квантификатор регуларног израза Опис 7 ИН Било који знак који није реч, (^ в) 1 Икс? к се појављује једном или никако два к + к се појављује један или више пута 3 Икс * к се јавља нула или више пута 4 к {н} к се јавља н пута 5 к {н,} к се јавља н или више пута 6 Кс и З} к се јавља најмање и пута, али мање од з пута
Регек мета карактери
Метазнакови у регуларном изразу раде као скраћенице. Ови кодови укључују размаке и не-размаке, заједно са осталим кратким кодовима.
Следећа табела наводи мета знакове регуларног израза.
Немој Мета карактери Опис 1 . Било који знак (може или не мора одговарати терминатору) два д Било које цифре, (0-9) 3 Д Било која не-цифра, (^ 0-9) 4 с Било који размак, ( т н к0Б ф р) 5 С Било који знак који није размак, (^ с) 6 ин Било који знак речи, (а-зА-З_0-9) 8 б Граница речи 9 Б Граница која није реч
Доље је дат Јава програм који користи горе наведене посебне знакове у регуларном изразу.
import java.util.regex.*; public class RegexExample{ public static void main(String args()){ // returns true if string exactly matches 'Jim' System.out.print('Jim (jim):' + Pattern.matches('Jim', 'jim')); // Returns true if the input string is Peter or peter System.out.println('
(Pp)eter(Peter) :' + Pattern.matches('(Pp)eter', 'Peter')); //true if string = abc System.out.println('
.*abc.*(pqabcqp) :' + Pattern.matches('.*abc.*', 'pqabcqp')); // true if string doesn't start with a digit System.out.println('
^(^\d).*(abc123):' + Pattern.matches('^(^\d).*', 'abc123')); // returns true if the string contains exact three letters System.out.println('
(a-zA-Z)(a-zA-Z)(a-zA-Z) (aQz):' + Pattern.matches('(a-zA-Z)(a-zA-Z)(a-zA-Z)', 'aQz')); System.out.println('
(a-zA-Z)(a-zA-Z)(a-zA-Z), a10z' + Pattern.matches('(a-zA-Z)(a-zA-Z)(a-zA-Z), a10z', 'a10z')); //input string length = 4 // true if the string contains 0 or more non-digits System.out.println('
\D*, abcde:' + Pattern.matches('\D*', 'abcde')); //True // true of line contains only word this ^-start of the line, $ - end of the line System.out.println('
^This$, This is Java:' + Pattern.matches('^This$', 'This is Java')); System.out.println('
^This$, This:' + Pattern.matches('^This$, This', 'This')); System.out.println('
^This$, Is This Java?:' + Pattern.matches('^This$, Is This Java?', 'Is This Java?')); } }
Излаз:
Јим (јим): нетачно
(Пп) етер (Петар): тачно
. * абц. * (пкабцкп): тачно
^ (^ д). * (абц123): тачно
(а-зА-З) (а-зА-З) (а-зА-З) (аКз): тачно
(а-зА-З) (а-зА-З) (а-зА-З), а10зфалсе
Д *, абцде: тачно
^ Овај $, Ово је Јава: фалсе
^ Ово $, Ово: нетачно
^ Овај $, да ли је ово Јава?: Фалсе
У горњем програму обезбедили смо различите регуларне изразе који се подударају са улазним низом. Читаоцима се саветује да прочитају коментаре у програму за сваки регуларни израз како би боље разумели концепт.
Регек логички или (|) оператор
Можемо користити логички или (| оператор) у регуларном изразу који нам даје могућност избора било ког операнда од | оператер. Овај оператор можемо користити у регуларном изразу да бисмо дали избор карактера или низа. На пример, ако желимо да подударамо обе речи, „тест“ и „Тест“, тада ћемо ове речи укључити у логички или оператор као Тест | тест.
Погледајмо следећи пример да бисмо разумели овај оператор.
import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexOR { public static void main(String() args) { // Regex string to search for patterns Test or test String regex = '(Test|test)'; // Compiles the pattern and obtains the matcher object from input string. Pattern pattern = Pattern.compile(regex); String input = 'Software Testing Help'; Matcher matcher = pattern.matcher(input); // print every match while (matcher.find()) { System.out.format('Text '%s' found at %d to %d.%n', matcher.group(), matcher.start(), matcher.end()); } //define another input string and obtain the matcher object input = 'SoftwaretestingHelp'; matcher = pattern.matcher(input); // Print every match while (matcher.find()) { System.out.format('Text '%s' found at %d to %d.%n', matcher.group(), matcher.start(), matcher.end()); } } }
Излаз:
Текст „Тест“ пронађен у 9 до 13.
Текст „тест“ пронађен је од 8 до 12.
У овом програму обезбедили смо регуларни израз „(Тест | тест)“. Затим прво дајемо улазни низ као „Помоћ за тестирање софтвера“ и подударамо се са узорком. Видимо да је шибица пронађена и позиција одштампана.
Даље, улазни низ дајемо као „СофтваретестингХелп“. Овог пута је и меч пронађен. То је зато што је регуларни израз користио или оператор, а тиме и образац са обе стране | оператор се подудара са низом.
Провера е-поште помоћу регуларног израза
Такође можемо потврдити ид (адресу) е-поште помоћу регуларног израза помоћу методе јава.утил.регек.Паттерн.матцхес (). Поклапа се са датим ИД-ом е-поште са регуларним изразом и враћа труе ако је емаил важећи.
Следећи програм приказује валидацију е-поште помоћу регуларног израза.
public class EmailDemo { static boolean isValidemail(String email) { String regex = '^(\w-_\.+)*(\w-_\.)\@((\w)+\.)+(\w)+(\w)$'; //regex to validate email. return email.matches(regex); //match email id with regex and return the value } public static void main(String() args) { String email = 'ssthva@gmail.com'; System.out.println('The Email ID is: ' + email); System.out.println('Email ID valid? ' + isValidemail(email)); email = '@sth@gmail.com'; System.out.println('The Email ID is: ' + email); System.out.println('Email ID valid? ' + isValidemail(email)); } }
Излаз:
ИД е-поште је: сстхва@гмаил.цом
Да ли је важећи ИД е-поште? истинито
ИД е-поште је: @ стх @ гмаил.цом
ИД е-поште важе? лажно
Као што видимо из горњег резултата, први ИД е-поште је важећи. Други ид директно започиње са @ и стога га регуларни израз не потврђује. Отуда је неважећи ИД.
како покренути .јар датотеку на Виндовс 10
Често постављана питања
П # 1) Шта је у регуларном изразу?
Одговор: ДО Регуларни израз обично називани регуларни израз је образац или низ знакова (нормалних или посебних или Мета знакова) који се користи за потврду улазног низа.
П # 2) Какав је значај класе Матцхер за регуларни израз у Јави?
Одговор: Класа подударања (јава.утил.регек.Матцхер) делује као регуларни израз. Изводи операције подударања тумачењем обрасца.
П # 3) Који је образац у Јави?
Одговор: Пакет јава.утил.регек пружа класу Паттерн која се користи за компајлирање регуларног израза у образац који је стандардни приказ регуларног израза. Овај образац се затим користи за валидацију низова тако што га подудара са узорком.
П # 4) Шта је Б у регуларном изразу?
Одговор: Б у регуларном изразу означава се као б и представља сидрени знак који се користи за подударање са позицијом која се назива граница речи. Почетак реда означен је знаком (^), а крај реда означен је знаком долара ($).
П # 5) Да ли је Јава узорак заштићен нитима?
Одговор: Да. Примери класе Паттерн су непроменљиви и сигурни за употребу у више истовремених нити. Али примерци класе матцхер нису заштићени од нити.
Закључак
У овом упутству смо разговарали о регуларним изразима на Јави. Регуларни израз који је познат и као „регуларни израз“ користи се за потврђивање улазног низа у Јави. Јава пружа „ јава.утил.регек ' пакет који пружа класе попут Паттерн, Матцхер итд. које помажу у дефинисању и подударању узорка са улазним низом.
Такође смо видели разне специјалне класе знакова и Метакарактере које можемо користити у регуларном изразу који дају скраћенице за подударање образаца. Такође смо истражили валидацију е-поште користећи регек.
=> Овде истражите једноставну серију Јава тренинга.
Препоручено читање