c regex tutorial regular expressions c with examples
Výukový program k regulárnym výrazom C ++ alebo k regulárnym výrazom vysvetľuje Vysvetlenie práce s regulárnym výrazom v jazyku C ++ vrátane funkcie zhody regexu, vyhľadávania, výmeny, overovania vstupu a tokenizácie:
Regulárny výraz alebo regulárne výrazy alebo regulárne výrazy, ako sa bežne nazývajú, sa používajú na vyjadrenie konkrétneho vzoru reťazca alebo textu. Regulárne výrazy sa často používajú na označenie štandardnej textovej syntaxe reťazca.
=> Navštívte tu a pozrite si sériu školení pre C ++ pre všetkých.
Každý znak v regulárnom výraze má buď znak s doslovným významom, alebo „metaznak“, ktorý má osobitný význam.
Napríklad , regulárny výraz „a (a-z)“ môže mať hodnoty „aa“, „ab“, „sekera“ atď. Tu má a literárny význam a (a-z) označuje akýkoľvek malý znak od a do z.
Vyššie uvedený príklad je samozrejme najjednoduchší. Môžeme mať regulárny výraz so zložitejšími vzormi, aby sme sa zhodovali.
Takmer všetky programovacie jazyky poskytujú podporu pre regulárne výrazy. C ++ má priamu podporu pre regulárne výrazy od C ++ 11 a ďalej. Okrem programovacích jazykov používa väčšina programov na spracovanie textu ako lexers, pokročilé textové editory atď. Regexy.
V tomto tutoriále preskúmame podrobnosti regexov všeobecne, ako aj s ohľadom na programovanie v C ++.
Čo sa dozviete:
- Regulárny výraz (regulárny výraz) v jazyku C ++
- Šablóny funkcií používané v regulárnom jazyku C ++
- Validácia vstupu C ++
- Záver
Regulárny výraz (regulárny výraz) v jazyku C ++
Regulárny výraz alebo regulárny výraz je výraz obsahujúci sekvenciu znakov, ktoré definujú konkrétny vyhľadávací vzor, ktorý je možné použiť v algoritmoch hľadania reťazcov, algoritmoch hľadania alebo hľadania / nahradenia atď.
Väčšina programovacích jazykov poskytuje buď vstavané možnosti pre regulárny výraz alebo prostredníctvom knižníc. Od C ++ 11 a ďalej poskytuje C ++ podporu regexu pomocou štandardnej knižnice cez hlavičku.
Procesor regulárneho výrazu, ktorý sa používa na analýzu regulárneho výrazu, ho preloží do internej reprezentácie, ktorá sa vykoná a porovná s reťazcom, ktorý predstavuje hľadaný text. Jazyk C ++ 11 používa ako predvolenú gramatiku pre regulárny výraz gramatiku ECMAScript. ECMAScript je jednoduchý, ale poskytuje výkonné funkcie regulárneho výrazu.
Pozrime sa na niektoré vzory, ktoré určujeme v regulárnych výrazoch, ako napríklad Rozsahová špecifikácia, Opakované vzory atď.
Rozsah špecifikácie
Zadanie rozsahu znakov alebo literálov je jedným z najjednoduchších kritérií použitých v regulárnom výraze.
Napríklad, môžeme určiť rozsah malých písmen od a do z takto:
(a-z)
Zhoda bude presne s jedným malým písmenom.
Nasledujúce kritériá,
(A-Za-z0-9)
Vyššie uvedený výraz určuje rozsah, ktorý obsahuje jeden veľký znak, jeden malý znak a číslicu od 0 do 9.
Konzoly (()) vo vyššie uvedených výrazoch majú špeciálny význam, t. J. Slúžia na určenie rozsahu. Ak chcete zahrnúť zátvorku ako súčasť výrazu, budete musieť uniknúť.
Takže nasledujúci výraz,
( (0-9)
Vyššie uvedený výraz označuje otváraciu zátvorku a číslicu v rozsahu 0 až 9 ako regulárny výraz.
Ale všimnite si, že keď programujeme v C ++, musíme použiť nasledujúcu únikovú postupnosť špecifickú pre C ++:
(\ (0-9)
Opakovaný vzor
Príklady rozsahov, ktoré sme zadali vyššie, sa zhodujú iba s jedným znakom alebo literálom. Ak chceme priradiť viac ako jeden znak, zvyčajne zadáme „modifikátor výrazu“ spolu so vzorom, čím sa urobí opakovaný vzor.
Modifikátor výrazu môže byť „+“, ktorý navrhuje párovanie výskytu vzoru jeden alebo viackrát, alebo to môže byť „*“, ktorý naznačuje porovnanie výskytu vzoru nula alebo viackrát.
Napríklad,nasledujúci výraz,
(a-z) + zodpovedá reťazcom ako a, aaa, abcd, softwaretestinghelp atď. Upozorňujeme, že nikdy sa nezhoduje s prázdnym reťazcom.
Výraz,
(a-z) * bude zodpovedať prázdnemu reťazcu alebo niektorému z vyššie uvedených reťazcov.
Ak chcete určiť skupinu znakov, ktorá sa má zhodovať jeden alebo viackrát, môžete použiť zátvorky takto:
(Xyz) +
Vyššie uvedený výraz sa bude zhodovať s Xyz, XyzXyz a XyzXyzXyz atď.
Príklad regulárneho výrazu C ++
Zvážte regulárny výraz, ktorý sa zhoduje s názvom súboru systému MS-DOS, ako je uvedené nižšie.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Vyššie uvedený regulárny výraz je možné interpretovať takto:
Priraďte písmeno (malé a potom veľké) alebo podčiarknutie. Potom priraďte nulu alebo viac znakov, z ktorých každý môže byť písmeno, podčiarknutie alebo číslica. Potom priraďte doslovnú bodku (.). Za bodkou spojte jeden alebo viac znakov, z ktorých každý môže byť písmeno alebo číslica označujúca príponu súboru.
Šablóny funkcií používané v regulárnom jazyku C ++
Poďme si teraz predstaviť niektoré dôležité šablóny funkcií pri programovaní regexu v C ++.
regex_match ()
Táto šablóna funkcie sa používa na priradenie daného vzoru. Táto funkcia vráti hodnotu true, ak sa daný výraz zhoduje s reťazcom. V opačnom prípade funkcia vráti hodnotu false.
Nasleduje príklad programovania v C ++, ktorý demonštruje funkciu regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Výkon:

Vo vyššie uvedenom programe najskôr porovnáme reťazec „softwareTesting“ s regulárnym výrazom „(„ (soft) (. *) “Pomocou funkcie regex_match. Následne tiež demonštrujeme rôzne variácie regex_match tak, že mu odovzdáme objekt reťazca, rozsah atď.
regex_search ()
Funkcia regex_search () sa používa na vyhľadanie vzoru v reťazci, ktorý sa zhoduje s regulárnym výrazom.
Zvážte nasledujúci program C ++, ktorý ukazuje použitie 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:'< Výkon:

Pomocou objektu regulárneho výrazu zadáme reťazec a potom regulárny výraz. Tento reťazec a regulárny výraz sú odovzdané funkcii regex_search spolu s typom príznaku smatch. Funkcia vyhľadá prvý výskyt vzoru vo vstupnom reťazci a vráti priradený reťazec.
regex_replace ()
Funkcia regex_replace () slúži na nahradenie zhody vzoru s regulárnym výrazom reťazcom.
Poďme si pomocou programu C ++ demonštrovať funkciu regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Výkon:

Tu máme vstupný reťazec. Poskytujeme regulárny výraz, ktorý zodpovedá reťazcu začínajúcemu na „p“. Potom nahradíme zhodné slovo slovom „web“. Ďalej nahradíme slovo „web“ späť na portál.
Validácia vstupu C ++
Diskutovali sme o hlavných šablónach funkcií, ktoré sa používajú na porovnávanie vzorov pomocou regulárneho výrazu. Je pozoruhodné, že hlavným účelom, ktorý regex slúži, je overenie vstupu. Vstup zadaný zo štandardného vstupného zariadenia môžete overiť pomocou výrazu regulárneho výrazu.
V nasledujúcom programe si ukážte, ako môžete pomocou regulárneho výrazu overiť prichádzajúce údaje.
#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'< Výkon:

Tento program sa zhoduje so vstupom zadaným používateľom na overenie, či ide o celé číslo. Vyššie uvedený výstup ukazuje, že keď je zadané celé číslo, dáva príslušnú správu a keď sú zadané akékoľvek ďalšie údaje, dáva správu ako neplatný vstup.
aký je najlepší počítačový čistič zadarmo
Záver
Regex sa používa vo vyhľadávacích nástrojoch na vyhľadávanie vzorov, vyhľadávanie a nahrádzanie dialógov aplikácií, ako sú textové procesory a textové editory. Regex sa používa aj v utilitách UNIX, ako je sed, awk, ako aj na lexikálnu analýzu programu.
V tomto tutoriáli sme videli funkcie, ktoré sa používajú na priraďovanie, vyhľadávanie a nahrádzanie vzorov. Pomocou týchto funkcií môžeme v podstate vyvinúť efektívnu aplikáciu, ktorá implementuje požadovanú funkcionalitu pomocou regulárneho výrazu.
Regex umožňuje efektívne overiť vstup alebo vyhľadať a nahradiť reťazec opravným vzorom, čo je možné vykonať pomocou niekoľkých riadkov kódu C ++.
Prečítajte si tiež => Výukový program pre regulárne výrazy Java
=> Skontrolujte VŠETKY výukové programy pre C ++ tu.
Odporúčané čítanie
- Regulárny výraz MongoDB $ regex s príkladom
- Výukový program pre Python DateTime s príkladmi
- Ako používať regulárne výrazy systému Unix
- Výukový program Java Array Length s príkladmi kódu
- Výukový program pre skriptovanie Unixu s príkladmi
- Výukový program zdieľania MongoDB s príkladom
- Sprievodca hľadaním prvkov selénom podľa výučby s príkladmi
- Výukový program pre Unix Pipes: Rúry v programovaní v Unixe