c regex tutorial regular expressions c with examples
Водич за регуларне изразе Ц ++ или регуларни израз објашњава рад регуларног израза у језику Ц ++, укључујући функционалност подударања регуларног израза, претраживања, замене, провере ваљаности и токенизације:
Регуларни израз или регуларни изрази или регуларни изрази, како их обично зову, користе се за представљање одређеног обрасца низа или текста. Регекси се често користе за означавање стандардне текстуалне синтаксе низа.
=> Посетите овде да бисте видели Ц ++ серију обуке за све.
Сваки знак у регуларном изразу има или карактер са дословним значењем, или „метакарактер“ који има посебно значење.
На пример , регуларни израз „а (а-з)“ може имати вредности „аа“, „аб“, „ак“ итд. Овде а има дословно значење и (а-з) означава било који мали знак од а до з.
Наравно, горњи пример је најједноставнији. Можемо имати регуларни израз са сложенијим обрасцима који се подударају.
Готово сви програмски језици пружају подршку за регуларне изразе. Ц ++ има директну подршку за регуларне изразе од Ц ++ 11 надаље. Осим програмских језика, већина програма за обраду текста попут лексера, напредних уређивача текста итд. Користи регуларне изразе.
У овом упутству ћемо истражити детаље регуларних израза уопште, као и у вези са програмирањем на Ц ++.
Шта ћете научити:
- Регуларни израз (регуларни израз) на језику Ц ++
- Предлошци функција који се користе у регуларном изразу Ц ++
- Провера ваљаности улаза Ц ++
- Закључак
Регуларни израз (регуларни израз) на језику Ц ++
Регуларни израз или регуларни израз је израз који садржи низ знакова који дефинишу одређени образац претраживања који се може користити у алгоритмима претраживања низова, проналажењу или проналажењу / замени алгоритама итд. Регекси се такође користе за проверу улазних вредности.
Већина програмских језика пружа или уграђену могућност за регуларни израз или путем библиотека. Од Ц ++ 11 надаље, Ц ++ пружа подршку за регуларни израз помоћу стандардне библиотеке преко заглавља.
Регек процесор који се користи за рашчлањивање регуларног израза преводи га у интерну представу која се извршава и подудара са низом који представља текст који се претражује. Ц ++ 11 користи граматику ЕЦМАСцрипт као подразумевану граматику за регуларни израз. ЕЦМАСцрипт је једноставан, али пружа моћне могућности редовног израза.
Погледајмо неке од образаца које специфицирамо у регуларном изразу попут Спецификација опсега, Поновљени обрасци итд.
Спецификације домета
Навођење опсега знакова или слова је један од најједноставнијих критеријума који се користе у регуларном изразу.
На пример, можемо одредити низ малих слова од а до з на следећи начин:
(а-з)
Ово ће се подударати са тачно једним малим словом.
Следећи критеријуми,
(А-За-з0-9)
Горњи израз специфицира опсег који садржи један појединачни велики, један мали и цифру од 0 до 9.
Заграде (()) у горњим изразима имају посебно значење, тј. Користе се за одређивање опсега. Ако желите да додате заграду као део израза, мораћете да је побегнете.
Дакле следећи израз,
( (0-9)
Горњи израз означава почетну заграду и цифру у опсегу од 0 до 9 као регуларни израз.
Али имајте на уму да док програмирамо на Ц ++, морамо да користимо Ц ++ специфичну излазну секвенцу како следи:
(\ (0-9)
Поновљени образац
Примери опсега које смо горе навели подударају се само са једним знаком или словом. Ако желимо да подударамо више од једног знака, обично одредимо „модификатор израза“ заједно са узорком, чинећи га тако поновљеним узорком.
Модификатор израза може бити „+“ који предлаже подударање појављивања узорка један или више пута или може бити „*“ који предлаже подударање појављивања узорка нула или више пута.
На пример,следећи израз,
(а-з) + подудара се са жицама попут а, ааа, абцд, софтваретестингхелп итд. Имајте на уму да се никада неће подударати са празним низом.
Израз,
(а-з) * подудараће се са празним низом или било којим од горе наведених низова.
Ако желите да наведете групу знакова која се подудара један или више пута, онда можете да користите заграде на следећи начин:
(Ксиз) +
Горњи израз ће се подударати са Ксиз, КсизКсиз и КсизКсизКсиз итд.
Пример регуларног израза Ц ++
Размотрите регуларни израз који се подудара са именом МС-ДОС датотеке, као што је приказано доле.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Горњи регуларни израз може се протумачити на следећи начин:
Упоредите слово (мало, а затим велико) или доње црте. Затим подударите са нула или више знакова, у којима сваки може бити слово, доња црта или цифра. Затим упарите дословну тачку (.). Након тачке, подударајте се са једним или више знакова, у којима сваки може бити слово или цифра која означава екстензију датотеке.
Предлошци функција који се користе у регуларном изразу Ц ++
Хајде сада да разговарамо о неким важним предлошцима функција током програмирања регуларног израза на Ц ++.
регек_матцх ()
Овај образац функције користи се за подударање са датим узорком. Ова функција враћа вредност труе ако се дати израз подудара са низом. У супротном, функција враћа фалсе.
Следи пример програмирања на Ц ++ који демонстрира функцију регек_матцх.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Излаз:

У горе наведеном програму прво подударамо низ „софтвареТестинг“ са регуларним изразом „(„ (софт) (. *) “Помоћу функције регек_матцх. Потом демонстрирамо различите варијације регек_матцх прослеђујући му објект низа, домет итд.
регек_сеарцх ()
Функција регек_сеарцх () користи се за тражење узорка у низу који се подудара са регуларним изразом.
Размотрите следећи програм Ц ++ који приказује употребу регек_сеарцх ().
#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:'< Излаз:

Наведемо низ, а затим регуларни израз помоћу објекта регуларног израза. Овај низ и регуларни израз преносе се у функцију регек_сеарцх заједно са типом заставе сматцх. Функција тражи прву појаву узорка у улазном низу и враћа подударани низ.
регек_реплаце ()
Функција регек_реплаце () користи се за замену узорка који се подудара са регуларним изразом низом.
Користимо програм Ц ++ да демонстрирамо функцију регек_реплаце ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Излаз:

Овде имамо улазни низ. Пружамо регуларни израз који одговара низу који почиње са „п“. Затим одговарајућу реч замењујемо речју „веб локација“. Затим реч „веб локација“ замењујемо назад на порталу.
Провера ваљаности улаза Ц ++
Разговарали смо о главним предлошцима функција који се користе за подударање образаца помоћу регуларног израза. Приметно је да је главна сврха коју регуларни израз служи провера ваљаности уноса. Можете потврдити улаз који сте унели са стандардног уређаја за унос помоћу израза регуларног израза.
Проверите доњи програм да бисте демонстрирали како можете да користите регуларни израз за потврду долазних података.
#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'< Излаз:

Овај програм се подудара са улазом који је корисник унео да би потврдио да ли је цео број. Горњи излаз показује да када се унесе цео број даје одговарајућу поруку, а када се уносе било који други подаци даје поруку као неважећи улаз.
како вратити низове у јави
Закључак
Регек се користи у претраживачима за претраживање образаца, претраживање и замену дијалога апликација као што су процесори текста и уређивачи текста. Регек се такође користи у УНИКС услужним програмима попут сед, авк као и у лексичкој анализи програма.
Видели смо функције које се користе за подударање, претраживање и замену образаца у овом упутству. Користећи ове функције, у основи можемо развити ефикасну апликацију која имплементира жељену функционалност помоћу регуларног израза.
Регек омогућава ефикасну проверу уноса или претраживања и замену низа узорком закрпавања, а то се може учинити помоћу врло неколико редова Ц ++ кода.
Такође прочитајте => Водич за редовно изражавање Јава
=> Овде погледајте СВЕ туторијале за Ц ++.
Препоручено читање
- МонгоДБ регуларни израз $ регек са примером
- Питхон ДатеТиме Водич са примерима
- Како се користе Уникови регуларни изрази
- Водич за дужину Јава низа са примерима кода
- Водич за скрипте за Уник Схелл са примерима
- МонгоДБ Водич за осенчење са примером
- Водич за текст помоћу примера за проналажење елемента селена
- Водич за Уник цеви: Цеви у програмирању за Уник