c regex tutorial regular expressions c with examples
Vodič za regularne izraze C ++ ili regularni izraz objašnjava rad regularnog izraza u C ++-u, uključujući funkcionalnost podudaranja regularnog izraza, pretraživanja, zamjene, provjere valjanosti i tokeniziranja:
Regularni izraz ili regularni izrazi ili regularni izrazi, kako ih obično nazivaju, koriste se za predstavljanje određenog uzorka niza ili teksta. Regeksi se često koriste za označavanje standardne tekstualne sintakse niza.
=> Posjetite ovdje da biste vidjeli C ++ seriju treninga za sve.
Svaki znak u regularnom izrazu ima ili znak s doslovnim značenjem, ili „metaznak“ koji ima posebno značenje.
Na primjer , regularni izraz 'a (a-z)' može imati vrijednosti 'aa', 'ab', 'axe' itd. Ovdje a ima doslovno značenje i (a-z) označava bilo koji mali znak od a do z.
Naravno, gornji je primjer najjednostavniji. Možemo imati regularni izraz s složenijim uzorcima koji se podudaraju.
Gotovo svi programski jezici pružaju podršku za regularne izraze. C ++ ima izravnu podršku za regularne izraze od C ++ 11 nadalje. Osim programskih jezika, većina programa za obradu teksta poput leksera, naprednih uređivača teksta itd. Koristi regularne izraze.
U ovom uputstvu istražit ćemo detalje regularnih izraza općenito, kao i s obzirom na programiranje na C ++.
Što ćete naučiti:
- Regularni izraz (regularni izraz) u jeziku C ++
- Predlošci funkcija koji se koriste u C ++ regularnom izrazu
- C ++ provjera ulaznih podataka
- Zaključak
Regularni izraz (regularni izraz) u jeziku C ++
Regularni izraz ili regularni izraz je izraz koji sadrži niz znakova koji definiraju određeni obrazac pretraživanja koji se može koristiti u algoritmima pretraživanja nizova, pronalaženju ili pronalaženju / zamjeni algoritama itd. Regeksi se također koriste za provjeru ulaznih vrijednosti.
Većina programskih jezika pruža ili ugrađene mogućnosti za regularni izraz ili putem knjižnica. Od C ++ 11 nadalje, C ++ pruža podršku za regularni izraz pomoću standardne knjižnice putem zaglavlja.
Regex procesor koji se koristi za raščlanjivanje regularnog izraza prevodi ga u interni prikaz koji se izvršava i podudara sa nizom koji predstavlja tekst koji se pretražuje. C ++ 11 koristi gramatiku ECMAScript kao zadanu gramatiku za regularni izraz. ECMAScript je jednostavan, ali pruža moćne mogućnosti regularnog izraza.
Pogledajmo neke uzorke koje specificiramo u regularnim izrazima poput Specifikacija raspona, Ponovljeni uzorci itd.
Specifikacije raspona
Određivanje raspona znakova ili slova jedan je od najjednostavnijih kriterija koji se koristi u regularnom izrazu.
Na primjer, možemo odrediti raspon malih slova od a do z kako slijedi:
(a-z)
Ovo će se podudarati s točno jednim malim slovom.
Sljedeći kriteriji,
(A-Za-z0-9)
Gornji izraz specificira raspon koji sadrži jedan pojedinačni znak, jedan mali znak i znamenku od 0 do 9.
Zagrade (()) u gornjim izrazima imaju posebno značenje, tj. Koriste se za određivanje raspona. Ako želite uključiti zagradu kao dio izraza, morat ćete je pobjeći.
Dakle sljedeći izraz,
( (0-9)
Gornji izraz označava zagradu za otvaranje i znamenku u rasponu od 0 do 9 kao regex.
No imajte na umu da dok programiramo na C ++-u, trebamo koristiti C ++ specifičnu izlaznu sekvencu kako slijedi:
(\ (0-9)
Ponovljeni obrazac
Primjeri raspona koje smo gore naveli podudaraju se samo s jednim znakom ili slovom. Ako želimo podudarati više od jednog znaka, obično specificiramo 'modifikator izraza' zajedno sa uzorkom, čineći ga tako ponovljenim uzorkom.
Modifikator izraza može biti '+' koji sugerira podudaranje pojavljivanja uzorka jedan ili više puta ili može biti '*' koji sugerira podudaranje pojavljivanja uzorka nula ili više puta.
Na primjer,sljedeći izraz,
(a-z) + podudara se sa žicama poput a, aaa, abcd, softwaretestinghelp itd. Imajte na umu da se nikada neće podudarati s praznim nizom.
Izraz,
(a-z) * odgovarat će praznom nizu ili bilo kojem od gore navedenih nizova.
Ako želite odrediti grupu znakova koja će se podudarati jedan ili više puta, tada možete koristiti zagrade na sljedeći način:
(Xyz) +
Gornji izraz odgovarat će Xyz, XyzXyz i XyzXyzXyz itd.
Primjer C ++ regularnog izraza
Razmotrite regularni izraz koji se podudara s MS-DOS nazivom datoteke kao što je prikazano u nastavku.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Gornji regularni izraz može se protumačiti na sljedeći način:
Uskladite slovo (malo, a zatim veliko) ili donje crte. Zatim se podudaraju s nula ili više znakova, u kojima svaki može biti slovo, podvlaka ili znamenka. Zatim uparite doslovnu točku (.). Nakon točke, podudarajte se s jednim ili više znakova u kojima svaki može sadržavati slovo ili znamenku koja označavaju nastavak datoteke.
Predlošci funkcija koji se koriste u C ++ regularnom izrazu
Razgovarajmo sada o nekim važnim predlošcima funkcija tijekom programiranja regularnog izraza na C ++.
regularni_odgovara ()
Ovaj predložak funkcije koristi se za podudaranje s danim uzorkom. Ova funkcija vraća vrijednost true ako se zadani izraz podudara sa nizom. U suprotnom, funkcija vraća false.
Slijedi primjer programiranja na C ++ koji pokazuje funkciju regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Izlaz:

U gore navedenom programu prvo podudaramo niz 'softwareTesting' sa regularnim izrazom '(' (soft) (. *) 'Pomoću funkcije regex_match. Potom prikazujemo i različite varijacije regex_match tako što mu prosljeđujemo objekt niza, domet itd.
pretraga regularnog izraza ()
Funkcija regex_search () koristi se za traženje uzorka u nizu koji odgovara regularnom izrazu.
Razmotrite sljedeći program C ++ koji prikazuje upotrebu 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:'< Izlaz:

Specificiramo niz, a zatim regularni izraz pomoću objekta regularnog izraza. Taj se niz i regularni izraz prosljeđuju funkciji regex_search zajedno s vrstom oznake smatch. Funkcija traži prvu pojavu uzorka u ulaznom nizu i vraća podudarani niz.
regex_replace ()
Funkcija regex_replace () koristi se za zamjenu uzorka koji se podudara s regularnim izrazom nizom.
Upotrijebimo program C ++ za demonstraciju funkcije regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Izlaz:

Ovdje imamo ulazni niz. Pružamo regularni izraz koji odgovara nizu koji započinje s 'p'. Zatim podudarnu riječ zamjenjujemo riječju 'web stranica'. Zatim riječ 'web stranica' zamjenjujemo natrag na portal.
C ++ provjera ulaznih podataka
Raspravljali smo o glavnim predlošcima funkcija koji se koriste za podudaranje uzoraka pomoću regexa. Značajno je da je glavna svrha koju regularni izraz služi provjera ulaznih vrijednosti. Možete provjeriti ulaz koji ste unijeli sa standardnog uređaja za unos pomoću izraza regularnog izraza.
Provjerite donji program da biste pokazali kako možete koristiti regularni izraz za provjeru dolaznih podataka.
#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'< Izlaz:

Ovaj se program podudara s ulazom koji je korisnik unio za provjeru valjanosti je li to cijeli broj. Gornji izlaz pokazuje da kada se unese cijeli broj daje odgovarajuću poruku, a kada se unose bilo koji drugi podaci daje poruku kao nevaljani ulaz.
gdje mogu pronaći sigurnosni ključ za bežičnu mrežu
Zaključak
Regex se koristi u tražilicama za pretraživanje obrazaca, pretraživanje i zamjenu dijaloga aplikacija kao što su procesori teksta i uređivači teksta. Regex se također koristi u uslužnim programima UNIX-a poput sed, awk, kao i u leksičkoj analizi programa.
U ovom uputstvu vidjeli smo funkcije koje se koriste za podudaranje, pretraživanje i zamjenu uzoraka. Koristeći ove funkcije, u osnovi možemo razviti učinkovitu aplikaciju koja implementira željenu funkcionalnost pomoću regularnog izraza.
Regex omogućuje učinkovitu provjeru valjanosti unosa ili pretraživanja i zamjenu niza uzorkom krpanja, a to se može učiniti pomoću vrlo nekoliko redaka C ++ koda.
Također pročitajte => Vodič za redovno izražavanje Java
=> Ovdje provjerite SVE tutorijale za C ++.
Preporučena literatura
- MongoDB regularni izraz $ regex s primjerom
- Python DateTime Vodič s primjerima
- Kako koristiti Unixove regularne izraze
- Vodič o dužini Java polja s primjerima koda
- Vodič za skripte za Unix Shell sa primjerima
- MongoDB Vodič za sjenčanje s primjerom
- Selen Pronađi element pomoću tekstualne lekcije s primjerima
- Vodič za Unix cijevi: Cijevi u Unix programiranju