c regex tutorial regular expressions c with examples
Урокът за регулярни изрази на C ++ или Regex обяснява работата на регулярния израз в C ++, включително функционалността на съвпадението на регулярните изрази, търсенето, замяната, валидирането на въвеждане и токенизирането:
Регулярният израз или регулярните изрази или регулярните изрази, както обикновено се наричат, се използват за представяне на определен модел на низ или текст. Регексите често се използват за означаване на стандартен текстов синтаксис на низ.
=> Посетете тук, за да видите серията C ++ за обучение за всички.
Всеки знак в регулярен израз има или символ с буквално значение, или „метасимвол“, който има специално значение.
Например , регулярният израз „a [a-z]“ може да има стойности „aa“, „ab“, „ax“ и т.н. Тук a има буквално значение и [a-z] означава всеки малък знак от a до z.
Разбира се, горният пример е най-простият. Можем да имаме регулярен израз с по-сложни модели, които да съвпадат.
Почти всички езици за програмиране осигуряват поддръжка за регулярни изрази. C ++ има директна поддръжка за регулярни изрази от C ++ 11 нататък. Освен езиците за програмиране, повечето програми за обработка на текст като лексери, усъвършенствани текстови редактори и др. Използват регулярни изрази.
В този урок ще изследваме подробностите за регулярните изрази като цяло, както и по отношение на програмирането на C ++.
Какво ще научите:
- Редовен израз (регулярно изражение) в C ++
- Шаблони за функции, използвани в C ++ regex
- Проверка на входа на C ++
- Заключение
Редовен израз (регулярно изражение) в C ++
Регулярният израз или регулярният израз е израз, съдържащ поредица от символи, които дефинират определен модел на търсене, който може да се използва в алгоритми за търсене на низове, намиране или намиране / заместване на алгоритми и др. Регексите също се използват за проверка на входа.
Повечето от езиците за програмиране предоставят или вградена възможност за регулярно изражение, или чрез библиотеки. От C ++ 11 нататък, C ++ осигурява поддръжка на регулярни изрази чрез стандартната библиотека чрез заглавката.
Процесорът на регулярни изрази, който се използва за синтактичен анализ на регулярно изражение, го преобразува във вътрешно представяне, което се изпълнява и съпоставя с низ, представляващ търсения текст. C ++ 11 използва граматика ECMAScript като граматика по подразбиране за регулярния израз. ECMAScript е прост, но предоставя мощни възможности за регулярни изрази.
Нека видим някои от моделите, които посочваме в регулярните изрази като Спецификация на диапазон, Повтарящи се модели и т.н.
Спецификации на обхвата
Посочването на диапазон от символи или литерали е един от най-простите критерии, използвани в регулярния израз.
Например, можем да посочим диапазон от малки букви от a до z, както следва:
[a-z]
Това ще съвпада точно с един малък знак.
Следните критерии,
[A-Za-z0-9]
Горният израз задава диапазона, съдържащ един единичен главен знак, един малък знак и цифра от 0 до 9.
Скобите ([]) в горните изрази имат специално значение, т.е. те се използват за задаване на диапазона. Ако искате да включите скоба като част от израз, ще трябва да го избягате.
Следният израз,
[ [0-9]
Горният израз показва отваряща скоба и цифра в диапазона от 0 до 9 като регулярно изражение.
Но имайте предвид, че докато програмираме на C ++, трябва да използваме специфичната за C ++ евакуационна последователност, както следва:
[\ [0-9]
Повторен модел
Примерите за диапазон, които сме посочили по-горе, съвпадат само с един символ или литерал. Ако искаме да съчетаем повече от един знак, обикновено посочваме „модификатора на израза“ заедно с шаблона, като по този начин го правим повторен шаблон.
Модификаторът на израза може да бъде „+“, който предлага съвпадение на появата на шаблон един или повече пъти, или може да бъде „*“, който предполага съвпадение на появата на шаблон нула или повече пъти.
Например,следният израз,
[a-z] + съответства на низовете като a, aaa, abcd, softwaretestinghelp и др. Имайте предвид, че никога няма да съответства на празен низ.
Изразът,
[a-z] * ще съответства на празен низ или някой от горните низове.
Ако искате да посочите група символи, които да съвпадат един или повече пъти, тогава можете да използвате скобите, както следва:
(Xyz) +
Горният израз ще съвпада с Xyz, XyzXyz и XyzXyzXyz и т.н.
Пример за C ++ регекс
Помислете за регулярен израз, който съвпада с име на файл на MS-DOS, както е показано по-долу.
char regex_filename[] = “[a-zA-Z_] [a-zA-Z_0-9]*\.[a-zA-Z0-9]+”;
Горният регулярен израз може да се интерпретира по следния начин:
Съвпадение на буква (малка и след това главна) или долна черта. След това трябва да се съчетаят нула или повече знаци, в които всеки може да бъде буква, долна черта или цифра. След това съпоставете буквална точка (.). След точката, съвпадайте с един или повече знака, в които всеки може да е буква или цифра, показваща разширение на файла.
Шаблони за функции, използвани в C ++ regex
Нека сега обсъдим някои от важните шаблони на функции, докато програмираме регулярно изражение в C ++.
regex_match ()
Този шаблон на функция се използва, за да съответства на дадения модел. Тази функция връща true, ако даденият израз съвпада с низа. В противен случай функцията връща false.
Следва пример за програмиране на C ++, който демонстрира функцията regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Изход:
В горната програма първо съпоставяме низа „softwareTesting“ с регулярния израз „(„ (soft) (. *) “, Като използваме функцията regex_match. обхват и др.
regex_search ()
Функцията regex_search () се използва за търсене на шаблон в низа, който съответства на регулярния израз.
Помислете за следната програма на C ++, която показва използването на regex_search ().
#include #include #include using namespace std; int main() { //string to be searched string mystr = 'She sells_sea shells in the sea shore'; // regex expression for pattern to be searched regex regexp('s[a-z_]+'); // flag type for determining the matching behavior (in this case on string objects) smatch m; // regex_search that searches pattern regexp in the string mystr regex_search(mystr, m, regexp); cout<<'String that matches the pattern:'< Изход:
Посочваме низ и след това регулярен израз, като използваме обекта на регулярно изражение. Този низ и регулярно изражение се предават на функцията regex_search заедно с типа флаг на смач. Функцията търси първата поява на шаблон във входния низ и връща съответния низ.
regex_replace ()
Функцията regex_replace () се използва за заместване на шаблона, съвпадащ с регулярен израз, с низ.
Нека използваме програма C ++, за да демонстрираме функцията regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Изход:
Тук имаме входен низ. Предоставяме регулярен израз, който да съответства на низ, започващ с „p“. След това заместваме съответната дума с думата „уебсайт“. След това заместваме думата „уебсайт“ обратно към портала.
Проверка на входа на C ++
Обсъдихме основните шаблони за функции, които се използват за съвпадение на шаблони с помощта на регулярно изражение. Забележително е, че основната цел, която регексът служи, е проверка на входа. Можете да проверите въведеното от стандартно устройство за въвеждане с помощта на израза за регулярно изражение.
Проверете програмата по-долу, за да демонстрирате как можете да използвате регулярния израз за проверка на входящите данни.
#include #include #include using namespace std; int main() { string input; regex integer_expr('(\+|-)?[[:digit:]]+'); //As long as the input is correct ask for another number while(true) { cout<>input; if(!cin) break; //Exit when the user inputs q if(input=='q') break; if(regex_match(input,integer_expr)) cout<<'Input is an integer'< Изход:
Тази програма съвпада с въведените от потребителя данни, за да провери дали е цяло число. Горният изход показва, че когато се въведе цяло число, то дава подходящо съобщение и когато се въвеждат други данни, то дава съобщението като невалиден вход.
инструменти, използвани от бизнес анализатор за събиране на изисквания
Заключение
Regex се използва в търсачките за търсене на модели, търсене и замяна на диалогови прозорци на приложения като текстови процесори и текстови редактори. Regex се използва и в UNIX помощни програми като sed, awk, както и лексикален анализ на програмата.
Видяхме функциите, които се използват за съвпадение, търсене и замяна на модели в този урок. Използвайки тези функции, ние можем да разработим ефективно приложение, което реализира желаната функционалност с помощта на регулярни изрази.
Regex позволява ефективно валидиране на въвеждането или търсенето и замяна на низ чрез шаблон за закърпване и това може да се направи с помощта на много няколко реда код на C ++.
Прочетете също => Урок за редовен израз на Java
=> Проверете ВСИЧКИ уроци за C ++ тук.
Препоръчително четене
- Редовен израз на MongoDB с регулярни изрази с пример
- Урок за Python DateTime с примери
- Как да използвам регулярните изрази на Unix
- Урок за дължина на масив Java с примери за кодове
- Урок за скриптове на Unix Shell с примери
- MongoDB Урок за оцветяване с пример
- Намиране на елемент от селен чрез урок с текст с примери
- Урок за Unix Pipes: Тръби в програмирането на Unix