c regex tutorial what is c regular expression
Овај туторијал за Ц # Регек објашњава шта је регуларни израз у Ц #, његова синтакса, методе класе Регек и како користити ове методе уз помоћ примера:
Регуларни израз у Ц # користи се за подударање одређеног узорка знакова. Регуларни изрази се користе кад год корисник треба да пронађе неки понављајући образац или да изврши валидацију података или чак за проверу форматирања података.
РегЕк се користи да би се утврдило да ли низ садржи или се подудара са датим узорком знакова. Редовни израз је првенствено низ знакова који означава образац.
Узорак може бити било шта, у распону од бројева, карактера или комбинације свега. Регек се широко користи за валидацију. Рашчлањивање или подударање низова, на пример, проналажење да ли се низ подудара са форматом валуте, бројем телефона или форматом датума.
=> Прочитајте једноставну серију Ц # тренинга.
како се прави лажна адреса е-поште
Шта ћете научити:
Регек класа у Ц #
Класа регуларних израза користи се у језику Ц # за обављање операција регуларних израза. Садржи неколико различитих метода које се могу користити за извођење различитих операција повезаних са регуларним изразом.
Може се користити за рашчлањивање великог текста за проналажење одређеног низа знакова коришћењем метода које се могу користити за извођење подударања, за замену или за поделу секвенце знакова.
Класа регуларног израза присутна је унутар простора имена; Систем.Тект.РегуларЕкпрессион. Класа као параметар прихвата низ у облику секвенце знакова.
Ц # Регек методе
ИсМатцх
Најједноставнија и најкориснија метода у класи Регек је метода ИсМатцх. Ова метода има различита преоптерећења за извршавање подударања знакова на основу различитих параметара.
Најједноставнији је ИсМатцх (текст низа) , овај метод омогућава кориснику да обезбеди низ знакова за подударање низа.
Друго преоптерећење ИсМатцх (текст низа, инт позиција). Ова метода враћа логичку вредност и узима два (стринг и интегер) параметра. Текст низа наведен у параметру је у основи конструктор регуларног израза који ће се подударати са секвенцом знакова са почетне позиције назначене целобројним параметром.
Дакле, овај метод ће покушати да подудара улазни низ у положају предвиђеном целобројним параметром у датом низу.
Треће преоптерећење, ИсМатцх (текст низа, узорак низа) прихвата два параметра и враћа логичку вредност. Први параметар је текст у којем корисник треба да пронађе образац, а следећи параметар даје образац који корисник претражује у датом тексту.
Препоручена литература = >> Подударање образаца у МиСКЛ-у
Замени (текст низа, текст замене низа)
Метода реплаце прихвата два параметра и враћа вредност низа. Први параметар је сликовни низ или регуларни израз који желите да користите за подударање, а други је замена регуларног израза.
Метода ради проналажењем подударања датог текста, а затим га замењује заменским текстом који је обезбедио корисник. Потпис методе је јавни низ Замените (текст низа, текст замене низа)
Јавни низ () Сплит (текст низа)
Метода сплит из класе регуларних израза прихваћа унос низа као параметар и враћа низ који садржи поднизове. Параметар прослеђен у методи је низ који треба раздвојити.
Метода проналази одговарајући образац уноса у низу и након што идентификује било који одговарајући образац, цепа низ на том месту на мањи подниз, при чему је сваки одговарајући образац тачка прекида. Затим метода враћа низ који садржи све поднизове.
Употреба Регек Ц # метода
Погледајмо употребу ових метода писањем једноставног програма.
public static void Main(string() args) { string patternText = 'Hello'; Regex reg = new Regex(patternText); //IsMatch(string input) Console.WriteLine(reg.IsMatch('Hello World')); //IsMatch(string input, int index) Console.WriteLine(reg.IsMatch('Hello', 0)); //IsMatch(string input, string pattern) Console.WriteLine(Regex.IsMatch('Hello World', patternText)); //Replace(string input, string replacement) Console.WriteLine(reg.Replace('Hello World', 'Replace')); //Split(string input, string pattern) string() arr = Regex.Split('Hello_World_Today', '_'); foreach(string subStr in arr) { Console.WriteLine('{0}', subStr); } }
Резултат горњег програма
Истинито
Истинито
Истинито
Замените свет
Здраво
Свет
Данас
Објашњење за горњи код:
На почетку програма створили смо објекат и за образац који ћемо користити за подударање кода у следећем уносу низа, користили смо форматирање текста како би ствари биле једноставне на почетку, али ако вам је пријатно, можете почните да користите обрасце регуларних израза. (Узорци регуларних израза детаљно ћемо размотрити док идемо напред у овом водичу)
Затим ћемо употријебити стринг подударања за унос фактора који смо прогласили наведеним објектом помоћу улазног низа и ако се подудара, вратит ће се да врати фалсе.
Следећи метод који смо користили је ИсМетход (унос низа, инт индекс). Ова метода прихвата двопараметарске параметре, а ми овде пружамо улазни низ и индекс одакле мора почети меч. На пример, овде смо желели да започнемо подударање од почетка улазног низа.
Затим смо демонстрирали употребу ИсМатцх-а (унос низа, образац низа). Овде смо пружили улазни низ, а затим смо желели да утврдимо да ли је текст узорка присутан у улазу или не. Ако је садашњи, вратиће се тачно (као у нашем случају), у супротном ће се вратити лажно.
Замењена је друга метода о којој смо разговарали. Овај метод је врло користан у програмима у којима желите да измените улазне податке или промените формат постојећих података.
Овде пружамо два параметра, први је улазни низ, а други низ који се може користити за замену претходног низа. Ова метода такође користи образац дефинисан у објекту регуларног израза који смо раније дефинисали.
Још једна важна метода коју смо користили је подељена. Ова метода се користи за поделу датог низа на основу неких понављајућих образаца. Овде смо обезбедили низ „Хелло_Ворлд_Тодаи“.
Рецимо да желимо да уклонимо доњу црту из датог низа и добијемо поднизове. За ово одредујемо улазни параметар, а затим дајемо образац који треба да користимо као тачку раздвајања. Метода враћа низ и можемо користити једноставну петљу попут фореацх да дохватимо све низове.
Синтакса регуларног израза
Постоји неколико различитих синтакса као што су посебни знакови, квантификатори, класе знакова итд. Који се могу користити за подударање одређеног узорка са датог уноса.
У овом делу упутства заронићемо дубоко у синтаксу коју нуди регек и покушаћемо да решимо неке сценарије из стварног живота користећи их. Пре него што наставимо, уверите се да сте стекли основну идеју регуларног израза и различите методе доступне у оквиру класе регуларних израза.
Специјалних знакова
Посебни знакови у регуларном изразу користе се за одређивање неколико различитих значења узорку. Сада ћемо размотрити неке од широко коришћених специјалних знакова и њихово значење у Регек-у.3
Специјалних знакова | Значење |
---|---|
в и В | Мала слова ‘в’ се користе за подударање алфанумеричких / доњих црта, а велика слова ‘В’ се користе за подударање знакова који нису речи. |
^ | Ово је једна од најчешће коришћених синтакса. Означава почетак, реч или образац након чега почиње да се подудара од почетка улазног текста. |
$ | Овај знак се користи за подударање речи са краја низа. Речи / обрасци означени пре овог симбола подудараће се са речима присутним на крају низа. |
. (тачка) | Тачка се користи за подударање једног знака у датом низу који се јавља једном. |
н | Ово се користи за нову линију. |
д и Д. | Мала слова „д“ се користе за подударање цифрених знакова, а велика слова „Д“ се користе за подударање нецифрених знакова. |
с и С. | Мала слова „с“ се користе за подударање са празним размацима, а велика слова „С“ се користе за подударање са белим размаком. |
Синтакса квантификатора
Синтакса квантификатора користи се за бројање или квантификовање критеријума подударања. На пример, ако желите да проверите да ли одређени низ један или више пута садржи абецеду. Погледајмо неке од често коришћених квантификатора у регуларном изразу.
Синтакса квантификатора | Значење |
---|---|
* | Овај симбол се користи за подударање са претходним знаком. |
+ | Овај симбол се користи за подударање једног или више знакова у низу. |
{н} | Нумеричка цифра унутар коврџавих заграда користи се за подударање броја претходног знака дефинисаног нумеричким унутар завојних заграда. |
{н,} | Број у завојним заградама и овај симбол користе се да би се поклапали са најмање н (тј. Бројевна вредност унутар заграда). |
{н, м} | Овај симбол се користи за подударање претходног знака од н броја пута до м броја пута. |
? | Овај симбол чини да се претходни знакови подударају као необавезни. |
Класа карактера
Класа знакова позната је и као скупови знакова, а то се користи да би се регек механизму рекло да тражи појединачно подударање од неколико знакова. Класа знакова подудараће се само са једним знаком, а редослед знакова затворених унутар скупа знакова није важан.
Класа карактера | Значење |
---|---|
( домет ) | Симбол углате заграде користи се за подударање низа знакова. На пример, можемо га користити за дефинисање било ког знака у опсегу од абецеде „а“ до „з“ затварањем опсега унутар заграде попут (а-з) Или, такође можемо подударати са нумеричким „1“ до „9“ означавањем (1-9) |
(^ опсег) | Ово означава негирану класу знакова. Користи се за подударање са било чим, а не у опсегу означеном унутар заграде. |
Ово се користи за подударање посебних знакова који могу имати сопствене регуларне симболе. Коса црта се користи за подударање специјалних знакова у њиховом дословном облику. |
Груписање
Округле заграде или заграде могу се користити за груписање дела регуларног израза. Ово омогућава кориснику да дода квантификатор са изразом.
Груписање | Значење |
---|---|
(групни израз) | Округле заграде се користе за груписање израза. |
|. | | Тхе | оператор се користи унутар округле заграде за употребу алтернативе на пример (а | б). |
Примери редовног израза Ц #
У претходном одељку сазнали смо о симболима регуларних израза, у овом одељку ћемо детаљно размотрити употребу различитих симбола у регуларном изразу и комбинацију у којој се они могу користити за подударање различитих израза.
У овом упутству ћемо размотрити неке од најчешћих сценарија из стварног живота са којима се можете суочити као програмер док радите на некој апликацији или у једноставном програму да бисте добили корисничке уносе.
Пример редовног израза са сценаријима из стварног живота
Научимо више о регуларним изразима користећи неке примере у стварном времену.
Сценариј 1: Потврдите да ли је улазни низ састављен од шестоцифрених знакова абецеде који не разликују велика и мала слова.
Најчешћи сценарио за регуларни израз је проналажење и подударање дате речи. На пример, рецимо да желим случајни абецедни низ од корисника и тај унос треба да има тачно 6 цифара.
Да бисмо потврдили да можемо користити једноставан регуларни израз. Напишимо програм за боље разумевање писања и употребе регуларног израза.
public static void Main(string() args) { string patternText = @'^(a-zA-Z){6}$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Helios')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Helo')); }
Оутпут
Истинито
Нетачно
Објашњење
У овом примеру покушавамо да потврдимо улазни низ да бисмо проверили да ли садржи шестоцифрени абецедни знак. Знакови могу бити и мала и велика слова, тако да морамо узети у обзир и то.
Дакле, овде смо дефинисали образац регуларног израза у променљивој „паттернТект“, а затим га проследили у објекат регуларног израза. Сада су следећи редови кода прилично једноставни, користили смо методу ИсМатцх за упоређивање регуларног израза и улазног низа.
Погледајмо сада регуларни израз који смо осмислили. Израз (^ (а-зА-З) {6} $) састоји се од 4 различита дела. „^“, „(А-зА-З)“, „{6}“ и „$“. Други део означава одговарајуће знакове који се користе за подударање израза, „а-з“ за мала слова и „А-З“ за велика слова.
Знак првог дела „^“ осигурава да низ започиње обрасцем дефинисаним у другом делу, тј. Малим и великим словима.
Коврџаве заграде у трећем делу одређују број знакова у низу који се могу препознати према дефинисаном узорку, тј. 6 у овом случају, а симбол „$“ мора бити сигуран да се завршава узорком дефинисаним у другом делу.
^ (а-зА-З) {6} $
двоструко повезана листа ц ++ туториал
Сценариј 2: Користите регуларни израз да бисте потврдили да реч која почиње са „Супер“, а након тога има размака, тј. Да бисте потврдили да ли је „Супер“ присутна на почетку реченице.
Претпоставимо да читамо неке корисничке уносе и да морамо бити сигурни да корисник своју реченицу увек започиње одређеном речју, бројем или абецедом. То се може постићи врло једноставно коришћењем једноставног регуларног израза.
Погледајмо пример програма, а затим детаљно разговарамо о томе како написати овај израз.
public static void Main(string() args) { string patternText = @'^Supers'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('Super man')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('Superhero')); }
Оутпут
Истинито
Нетачно
Објашњење
И у овом примеру смо користили сличну поставку кода као у првом. Узорак регуларног израза у овом сценарију захтева подударање са комбинацијом речи или реченица које почињу са „Супер“.
^ Супер
Дакле, како желимо да се подударамо од почетка серије речи, почећемо стављањем симбола „^“, а затим ћемо дати образац са којим желимо да се подударамо, у овом случају, „Супер“. Сада се образац који смо креирали „^ Супер“ може подударати са свим вредностима супер, чак и надчовека или натприродног, али не желимо само реч „Супер“.
То значи да након речи треба да буде размака који означава крај речи и почетак друге речи. Да бисмо то урадили, додаћемо симбол „ с“ на образац и тако направити наш коначни образац као
^ Супер с
Сценариј 3: Користите регуларни израз за проналажење важећих имена датотека са наставком типа сликовне датотеке.
Још један важан сценарио у стварном времену са којим се програмери често суочавају је валидација типова датотека. Рецимо да у корисничком интерфејсу имамо дугме за отпремање које може да прихвати само екстензије типа сликовне датотеке.
Морамо да потврдимо корисничку датотеку за отпремање и обавестимо га у случају да је отпремио погрешан формат датотеке. То се лако може постићи коришћењем регуларног израза.
Доље је дат једноставан програм за проверу овога.
public static void Main(string() args) jpeg
Оутпут
Истинито
Истинито
Истинито
Нетачно
Нетачно
Објашњење
Овде морамо да подударамо име датотеке. Важеће име датотеке састоји се од три дела ( назив датотеке +. + екстензија датотеке ). Морамо створити регуларни израз који би одговарао сва три дела. Почнимо са подударањем првог дела, тј. Имена датотеке. Име датотеке може садржавати алфанумеричке и посебне знакове.
Као што је раније поменуто, симбол за означавање је „ в“. Такође, назив датотеке може имати један или више знакова, па ће се користити симбол „+“. Комбинујте их и добијамо симбол за први део.
(w+)
Заграда је ово раздвојила у деловима. Следећи део је симбол тачке. Како симбол тачке има своје значење у регуларном изразу, користићемо обрнуту косу црту пре њега да бисмо му дали дословно значење. Комбинујте обоје и добили смо прва два дела регуларног израза.
(w+).
Сада, за трећи и последњи део, можемо директно дефинисати тражене наставке датотека одвојене „|“ ИЛИ симбол. То се затим може раздвојити затварањем унутар кружне заграде. Знак „$“ на крају осигурава да су дефинисане екстензије на крају низа. Хајде да их сада комбинујемо да бисмо добили коначни регуларни израз.
(w+).(jpg|png|jpeg|gif)$
Ако ово користимо у програму, можемо видети да се подудара са исправним форматом и враћа труе, али са неваљаним форматима, враћа фалсе.
Сценариј 4: Користите регуларни израз за потврду формата адресе веб локације
Претпоставимо да имамо веб образац који прихвата веб адресу или адресу домена. Желимо да корисник током попуњавања обрасца унесе тачну адресу веб / домена. За утврђивање да ли је корисник унео тачну веб адресу, регуларни израз може бити врло користан.
public static void Main(string() args) { string patternText = @'^www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('www.selenium.dev')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.movie.dont')); }
Оутпут
Истинито
Нетачно
Објашњење
Овде желимо да упаримо важеће име домена помоћу регуларног израза. Важеће име домена започиње скраћеницом „ввв“, а затим тачком (.), Затим називом веб локације након тога тачком (.) И на крају продужетком домене.
Дакле, слично претходном сценарију, покушаћемо да га подударамо део по део. Почнимо прво са подударањем „ввв.“ Део. Дакле, почињемо са почетним симболом, а затим као „ввв“. То је нешто што је фиксно, па користимо почетни симбол праћен тачним речима да се подударају.
“^www.”
Тада ћемо започети рад на другом делу. Други део веб адресе може бити било које алфанумеричко име. Дакле, овде ћемо користити квадратне заграде присутне у класи знакова да дефинишемо опсег који треба да се подудара. Након додавања другог дела са другим делом ћемо добити.
“^www.(a-zA-Z0-9){3,20}”
Овде смо додали и витичасте заграде како бисмо дефинисали минималну и максималну дужину знака за име веб странице. Дали смо најмање 3, а највише 20. Можете дати било коју минималну или максималну дужину коју желите.
Сада, пошто смо покрили први и други део веб адресе, остаје нам само последњи део, тј. Екстензија домена. Прилично је слично ономе што смо урадили у прошлом сценарију, директно ћемо се подударати са екстензијама домена користећи ИЛИ и затварајући свако ваљано проширење домена унутар кружне заграде.
Стога, ако све ово саберемо, имаћемо потпуни регуларни израз који одговара било којој важећој веб адреси.
www.(a-zA-Z0-9){3,20}.(com|in|org|co.in|net|dev)$
Сценариј 5: Употријебите Регуларни израз за провјеру формата адресе е-поште
Претпоставимо да на нашој веб страници имамо образац за пријаву који тражи од корисника да унесу своју адресу е-поште. Из очигледних разлога, нећемо желети да наш образац настави са неважећим адресама е-поште. Да бисмо потврдили да ли је адреса е-поште коју је корисник унео тачна или не, можемо користити регуларни израз.
Доље је дат једноставан програм за потврду адресе е-поште.
public static void Main(string() args) { string patternText = @'^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)'; Regex reg = new Regex(patternText); //When pattern matches Console.WriteLine(reg.IsMatch('software_test123@gmail.com')); Console.WriteLine(reg.IsMatch('Special.Char@yahoo.co.in')); //When pattern doesnt match Console.WriteLine(reg.IsMatch('ww.alsjk9874561230.mo@vie.dont')); }
Оутпут
Истинито
Истинито
Нетачно
Објашњење
Важећа адреса е-поште садржи абецеде, бројеве и неке посебне знакове као што су тачка (.), Цртица (-) и доње црте (_) праћене симболом „@“, а затим именом домена и наставком домене.
Дакле, адресу е-поште можемо поделити на четири дела, тј. Идентификатор е-поште, симбол „@“, име домена, а последњи је екстензија домена.
Почнимо са писањем регуларног израза за први део. Може бити алфанумерички са неким посебним знаковима. Претпоставимо да имамо величину израза у распону од 5 до 25 знакова. Слично ономе како смо то раније написали (у сценарију е-поште), можемо доћи до следећег израза.
^(a-zA-Z0-9._-){5,25}
Прелазимо на други део. То је релативно лако јер морамо да подударимо само један симбол, тј. „@“. Додавањем у горњи израз добијамо.
^(a-zA-Z0-9._-){5,25}.@
Прелазак на трећи део, тј. Име домена увек ће бити низ малих алфабетских знакова. Ако желите, можете да уврстите и нумеричке или велике алфабетске знакове, али за овај сценарио користићемо мала слова.
Ако додамо израз за мала слова абецеде дужине од 2 до 12 знакова, тада ћемо добити следећи израз.
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}
Сада нам је остао само израз за проширење домена, слично као у четвртом сценарију, бавићемо се одређеним екстензијама домена. Ако желите, можете их додати још тако што ћете их затворити у кружну заграду и раздвојити их са „|“ симбол.
Консолидација овог израза са претходним изразом даће нам коначну вредност израза за проверу е-поште.
^(a-zA-Z0-9._-){5,25}.@.(a-z){2,12}.(com|org|co.in|net)
Закључак
У овом упутству смо сазнали шта је регуларни израз заједно са синтаксом / симболима који се користе за означавање, конструисање регуларног израза. Регуларни израз омогућава кориснику да упари низ са датим узорком.
Ово је врло корисно у ситуацијама које захтевају брзу проверу уноса, на пример када корисник унесе своју адресу е-поште или број телефона, регуларни израз се може користити за брзу потврду формата и обавестити корисника о проблему ако је корисник унео погрешан формат.
Такође смо научили да се бавимо различитим сценаријима који се могу користити за различите апликације. Погледали смо корак по корак процеса писања израза за подударање речи, абецеде, адреса веб локација, ИД-ова е-поште, па чак и типова датотека и екстензија.
Ови сценарији су врло корисни у провери ваљаности корисничких уноса у реалном времену без писања бројних редова кода, а тиме помажу у уштеди времена и смањењу сложености. Ови примери су коришћени за усмјеравање корисника да креира сопствени скуп регуларних израза и тако му помогне у руковању са неколико различитих сценарија.
Регек може бити једноставан, попут употребе абецеде или бројева за подударање са датом серијом знакова или сложених, коришћењем комбинације посебних знакова, квантификатора, класа знакова итд. За потврђивање сложених формата или тражење одређеног обрасца у серији знакова.
Укратко, регуларни израз је прилично моћан алат за програмера и помаже у смањењу количине кода коју је потребно постићи у задатку подударања података или валидације.
=> Овде погледајте СВЕ Туториале за Ц #.
Препоручено читање
- Водич за Ц # низ - Методе низања са примерима кода
- Случајни број Ц # и генератор случајних низова Ц # са примерима кода
- Водич за регекс језика Ц ++: Регуларни изрази у језику Ц ++ са примерима
- МонгоДБ регуларни израз $ регек са примером
- Водич за Јава Регек са примерима редовног израза
- Како се користе Уникови регуларни изрази
- Коришћење постпроцесора у ЈМетер-у (екстрактор регуларног израза)
- Јава Стринг Водич | Јава стринг методе са примерима