c regex tutorial regular expressions c with examples
Vadnica o regularnih izrazih C ++ ali regularnih izrazih pojasnjuje delovanje regularnih izrazov v jeziku C ++, vključno s funkcionalnostjo ujemanja regularnih izrazov, iskanja, zamenjave, preverjanja veljavnosti in označevanja:
Regular Expression ali regularni izrazi ali regularni izrazi, kot jih običajno imenujejo, se uporabljajo za predstavitev določenega vzorca niza ali besedila. Redovni izrazi se pogosto uporabljajo za označevanje standardne besedilne skladnje niza.
=> Obiščite tukaj, da si ogledate serijo C ++ Training za vse.
Vsak znak v regularnem izrazu ima bodisi znak s dobesednim pomenom bodisi 'metaznak' s posebnim pomenom.
Na primer , lahko ima regularni izraz 'a [a-z]' vrednosti 'aa', 'ab', 'ax' itd. Tu ima a dobesedni pomen in [a-z] označuje kateri koli mali znak od a do z.
Seveda je zgornji primer najpreprostejši. Lahko imamo regularni izraz z bolj zapletenimi vzorci, ki se ujemajo.
Skoraj vsi programski jeziki nudijo podporo za regularne izraze. C ++ ima neposredno podporo za regularne izraze od C ++ 11 dalje. Poleg programskih jezikov večina programov za obdelavo besedila, kot so lexerji, napredni urejevalniki besedil itd., Uporablja regularne izraze.
V tej vadnici bomo raziskali podrobnosti o regularnih izrazih na splošno, pa tudi glede programiranja na C ++.
Kaj se boste naučili:
- Regularni izraz (regularni izraz) v jeziku C ++
- Predloge funkcij, uporabljene v regularnem izrazu C ++
- Preverjanje vnosa C ++
- Zaključek
Regularni izraz (regularni izraz) v jeziku C ++
Regularni izraz ali regularni izraz je izraz, ki vsebuje zaporedje znakov, ki določajo določen vzorec iskanja, ki ga je mogoče uporabiti v algoritmih za iskanje nizov, iskanju ali iskanju / zamenjavi algoritmov itd. Reggeksi se uporabljajo tudi za preverjanje vnosa.
Večina programskih jezikov ponuja bodisi vgrajeno zmožnost za regularni izraz bodisi prek knjižnic. Od C ++ 11 naprej C ++ zagotavlja podporo za regularne izraze s pomočjo standardne knjižnice prek glave.
Procesor regularnega izraza, ki se uporablja za razčlenitev regularnega izraza, ga pretvori v notranjo predstavitev, ki se izvede in ujema z nizom, ki predstavlja besedilo, ki ga iščete. C ++ 11 uporablja slovnico ECMAScript kot privzeto slovnico za regularni izraz. ECMAScript je preprost, vendar ponuja zmogljive zmožnosti regularnih izrazov.
Oglejmo si nekaj vzorcev, ki jih določimo v regularnih izrazih, kot so Specifikacija obsega, Ponavljajoči se vzorci itd.
Specifikacije obsega
Navedba obsega znakov ali dobesednih besed je eno najpreprostejših meril, ki se uporabljajo v regularnem izrazu.
Na primer lahko določimo obseg malih črk od a do z, kot sledi:
[a-z]
Ta se bo ujemal z natančno enim malim črko.
Naslednja merila,
[A-Za-z0-9]
Zgornji izraz določa obseg, ki vsebuje en sam velik, en mali znak in številko od 0 do 9.
Oklepaji ([]) v zgornjih izrazih imajo poseben pomen, torej se uporabljajo za določanje obsega. Če želite kot del izraza vključiti oklepaj, ga boste morali pobegniti.
Torej naslednji izraz,
[ [0-9]
Zgornji izraz označuje odpiralni oklepaj in številko v območju od 0 do 9 kot regularni izraz.
Upoštevajte pa, da moramo pri programiranju v jeziku C ++ uporabiti ubežno zaporedje C ++, kot sledi:
[\ [0-9]
Ponavljajoči se vzorec
Primeri obsega, ki smo jih navedli zgoraj, se ujemajo samo z enim znakom ali slovnico. Če se želimo ujemati z več znaki, običajno določimo »modifikator izraza« skupaj z vzorcem, s čimer postane ponovljeni vzorec.
Modifikator izraza je lahko '+', ki predlaga, da se pojavljanje vzorca ujema enkrat ali večkrat, ali pa '*', ki predlaga ujemanje pojava vzorca nič ali večkrat.
Na primer,naslednji izraz,
[a-z] + se ujema z nizi, kot so a, aaa, abcd, softwaretestinghelp itd. Upoštevajte, da se nikoli ne bo ujemal s praznim nizom.
Izraz,
[a-z] * se bo ujemala s praznim nizom ali katerim koli od zgornjih nizov.
Če želite določiti skupino znakov, ki se bo ujemala enkrat ali večkrat, lahko uporabite oklepaje na naslednji način:
(Xyz) +
Zgornji izraz se bo ujemal z Xyz, XyzXyz in XyzXyzXyz itd.
Primer regularnega izraza C ++
Razmislite o regularnem izrazu, ki se ujema z imenom datoteke MS-DOS, kot je prikazano spodaj.
char regex_filename[] = “[a-zA-Z_] [a-zA-Z_0-9]*\.[a-zA-Z0-9]+”;
Zgornji regularni izraz lahko razlagamo tako:
Ujemite črko (malo in nato veliko) ali podčrtaj. Nato se ujemajo z nič ali več znaki, v katerih je lahko vsaka črka, podčrtaj ali številka. Nato poiščite dobesedno piko (.). Za piko se ujema en ali več znakov, v katerih je lahko vsaka črka ali številka, ki označuje pripono datoteke.
Predloge funkcij, uporabljene v regularnem izrazu C ++
Pogovorimo se zdaj o nekaterih pomembnih predlogah funkcij med programiranjem regularnega izraza v jeziku C ++.
regex_match ()
Ta predloga funkcije se uporablja za ujemanje z danim vzorcem. Ta funkcija vrne true, če se dani izraz ujema z nizom. V nasprotnem primeru funkcija vrne false.
Sledi primer programiranja C ++, ki prikazuje funkcijo regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Izhod:
V zgornjem programu najprej z uporabo funkcije regex_match združimo niz »softwareTesting« z regularnim izrazom »(« (soft) (. *) ». Nato predstavimo tudi različne različice regex_match, tako da mu posredujemo niz, domet itd.
iskanje_regex ()
Funkcija regex_search () se uporablja za iskanje vzorca v nizu, ki se ujema z regularnim izrazom.
Razmislite o naslednjem programu C ++, ki prikazuje uporabo 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:'< Izhod:
Z objektom regex določimo niz in nato regularni izraz. Ta niz in regularni izraz se posredujeta funkciji regex_search skupaj z vrsto zastavice. Funkcija išče prvi pojav vzorca v vhodnem nizu in vrne ujemajoči se niz.
regex_replace ()
Funkcija regex_replace () se uporablja za zamenjavo vzorca, ki se ujema z regularnim izrazom, z nizom.
Za predstavitev funkcije regex_replace () uporabimo program C ++.
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Izhod:
Tukaj imamo vhodni niz. Ponujamo regularni izraz, ki se ujema z nizom, ki se začne z 'p'. Nato ujemajočo besedo nadomestimo z besedo 'spletno mesto'. Nato besedo »spletno mesto« zamenjamo nazaj na portal.
Preverjanje vnosa C ++
Razpravljali smo o glavnih predlogah funkcij, ki se uporabljajo za ujemanje vzorcev z uporabo regularnega izraza. Omeniti je treba, da je glavni namen, ki mu služi regularni izraz, potrditev vnosa. Vnos, ki ste ga vnesli iz standardne vhodne naprave, lahko potrdite z izrazom regularnega izraza.
V spodnjem programu preverite, kako lahko z regularnim izrazom preverite dohodne podatke.
#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'< Izhod:
Ta program se ujema z vnosom, ki ga vnese uporabnik, da preveri, ali gre za celo število. Zgornji izhod kaže, da ob vnosu celega števila poda ustrezno sporočilo, ob vnosu drugih podatkov pa sporočilo kot neveljaven vnos.
ip address tracker brezplačen prenos programske opreme
Zaključek
Regex se v iskalnikih uporablja za iskanje vzorcev, iskanje in zamenjavo pogovornih oken aplikacij, kot so urejevalniki besedil in urejevalniki besedil. Regex se uporablja tudi v pripomočkih UNIX, kot so sed, awk in leksikalna analiza programa.
V tej vadnici smo videli funkcije, ki se uporabljajo za ujemanje, iskanje in zamenjavo vzorcev. Z uporabo teh funkcij lahko v osnovi razvijemo učinkovito aplikacijo, ki izvaja želeno funkcionalnost z uporabo regularnih izrazov.
Regex omogoča učinkovito preverjanje vnosa ali iskanja in zamenjavo niza z vzorcem popravljanja, kar je mogoče storiti z uporabo zelo nekaj vrstic kode C ++.
Preberite tudi => Vadnica za regularni izraz Java
=> Tukaj preverite VSE Vadnice za C ++.
Priporočeno branje
- MongoDB Regularni izraz $ regex s primerom
- Vadnica Python DateTime s primeri
- Kako uporabljati regularne izraze Unix
- Vadnica za dolžino polja Java s primeri kode
- Vadnica za skriptiranje lupine Unix s primeri
- MongoDB Vadnica za osenčenje s primerom
- Vadnica za iskanje selena z besedilom z primeri
- Vadnica za cevi Unix: Cevi v programiranju Unix