c regex tutorial regular expressions c with examples
Självstudien om C ++ Regular Expressions eller Regex förklarar hur man arbetar med regex i C ++ inklusive funktionaliteten för regex-matchning, sökning, ersättning, inmatningsvalidering och tokenisering:
Regular Expression eller regexes eller regexp som de vanligtvis kallas används för att representera ett visst mönster av sträng eller text. Regexes används ofta för att beteckna en standardtextlig syntax för en sträng.
=> Besök här för att se C ++ träningsserien för alla.
Varje karaktär i ett reguljärt uttryck har antingen en karaktär med en bokstavlig betydelse eller en 'metatecken' som har särskild betydelse.
Till exempel , ett reguljärt uttryck 'a (a-z)' kan ha värdena 'aa', 'ab', 'ax' etc. Här har a en bokstavlig betydelse och (a-z) betecknar alla gemener från a till z.
Naturligtvis är ovanstående exempel det enklaste. Vi kan ha ett regelbundet uttryck med mer komplexa mönster att matcha.
Nästan alla programmeringsspråk stöder regexer. C ++ har direkt stöd för regexer från och med C ++ 11. Förutom programmeringsspråk använder de flesta textbehandlingsprogrammen som lexers, avancerade textredigerare etc. regexer.
I denna handledning kommer vi att utforska detaljerna om regexes i allmänhet såväl som med avseende på C ++ programmering.
Vad du kommer att lära dig:
- Regular Expression (regex) I C ++
- Funktionsmallar som används i C ++ regex
- C ++ Ingångsvalidering
- Slutsats
Regular Expression (regex) I C ++
Ett reguljärt uttryck eller regex är ett uttryck som innehåller en sekvens av tecken som definierar ett visst sökmönster som kan användas i strängsökningsalgoritmer, hitta eller hitta / ersätt algoritmer etc. Regexes används också för inmatningsvalidering.
De flesta av programmeringsspråken erbjuder antingen inbyggd kapacitet för regex eller genom bibliotek. Från och med C ++ 11 erbjuder C ++ regex-stöd med hjälp av standardbiblioteket via rubriken.
En regex-processor som används för att analysera en regex översätter den till en intern representation som körs och matchas mot en sträng som representerar texten som söks. C ++ 11 använder ECMAScript-grammatik som standardgrammatik för regex. ECMAScript är enkelt, men det ger kraftfulla regex-funktioner.
Låt oss se några av de mönster som vi anger i regex som Range Specification, Repeated Patterns, etc.
Räckviddsspecifikationer
Att specificera ett antal tecken eller bokstäver är ett av de enklaste kriterierna som används i en regex.
Till exempel, vi kan ange ett antal små bokstäver från a till z enligt följande:
(a-z)
Detta matchar exakt en gemener.
Följande kriterier,
(A-Za-z0-9)
Ovanstående uttryck specificerar intervallet som innehåller ett enda versaler, ett gemener och en siffra från 0 till 9.
Parenteserna (()) i ovanstående uttryck har en speciell betydelse, dvs. de används för att specificera intervallet. Om du vill inkludera en parentes som en del av ett uttryck måste du fly det.
Så följande uttryck,
( (0-9)
Ovanstående uttryck indikerar en öppningsfäste och en siffra i området 0 till 9 som en regex.
Men notera att när vi programmerar i C ++ måste vi använda den C ++ specifika escape-sekvensen enligt följande:
(\ (0-9)
Upprepat mönster
Räckvidden som vi har angett ovan matchar bara ett tecken eller bokstav. Om vi vill matcha mer än ett tecken anger vi vanligtvis ”expression modifier” tillsammans med mönstret och gör det därmed ett upprepat mönster.
En uttrycksmodifierare kan vara '+' som föreslår att matcha förekomsten av ett mönster en eller flera gånger eller det kan vara '*' som föreslår att matcha förekomsten av ett mönster noll eller flera gånger.
Till exempel,följande uttryck,
(a-z) + matchar strängarna som a, aaa, abcd, softwaretestinghelp osv. Observera att den aldrig kommer att matcha en tom sträng.
Uttrycket,
(a-z) * matchar en tom sträng eller någon av ovanstående strängar.
Om du vill ange en grupp tecken som ska matchas en eller flera gånger kan du använda parenteserna enligt följande:
(Xyz) +
Ovanstående uttryck matchar Xyz, XyzXyz och XyzXyzXyz, etc.
C ++ regex Exempel
Tänk på ett vanligt uttryck som matchar ett MS-DOS-filnamn som visas nedan.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Ovanstående regex kan tolkas på följande sätt:
Matcha en bokstav (gemener och sedan versaler) eller en understrykning. Matcha sedan noll eller fler tecken, där var och en kan vara en bokstav eller en understrykning eller en siffra. Matcha sedan en bokstavlig punkt (.). Efter punkten matchar du ett eller flera tecken, där var och en kan vara en bokstav eller siffra som anger filtillägget.
Funktionsmallar som används i C ++ regex
Låt oss nu diskutera några av de viktiga funktionsmallarna medan vi programmerar regex i C ++.
regex_match ()
Denna funktionsmall används för att matcha det givna mönstret. Den här funktionen returnerar true om det angivna uttrycket matchar strängen. I annat fall returnerar funktionen falsk.
Följande är ett C ++ programmeringsexempel som visar regex_match-funktionen.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Produktion:

I ovanstående program matchar vi först strängen 'softwareTesting' mot det reguljära uttrycket '(' (soft) (. *) 'Med funktionen regex_match. Därefter visar vi också olika variationer av regex_match genom att skicka ett strängobjekt till det, räckvidd etc.
regex_search ()
Funktionen regex_search () används för att söka efter ett mönster i strängen som matchar det reguljära uttrycket.
Tänk på följande C ++ - program som visar användningen av 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:'< Produktion:

Vi anger en sträng och sedan ett reguljärt uttryck med hjälp av regex-objektet. Denna sträng och regex skickas till regex_search-funktionen tillsammans med smatch-flaggtypen. Funktionen söker efter den första förekomsten av mönster i inmatningssträngen och returnerar den matchade strängen.
regex_replace ()
Funktionen regex_replace () används för att ersätta mönstermatchning till ett vanligt uttryck med en sträng.
Låt oss använda ett C ++ - program för att visa regex_replace () -funktionen.
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Produktion:

Här har vi en inmatningssträng. Vi tillhandahåller ett reguljärt uttryck för att matcha en sträng som börjar med 'p'. Sedan ersätter vi det matchade ordet med ordet ”webbplats”. Därefter byter vi ut webbplatsen tillbaka till portalen.
C ++ Ingångsvalidering
Vi har diskuterat de viktigaste funktionsmallarna som används för mönstermatchning med regex. Det är anmärkningsvärt att det huvudsakliga syftet som regex tjänar är ingångsvalidering. Du kan validera den ingång som matats in från en standardinmatningsenhet med hjälp av regex-uttrycket.
Kontrollera nedanstående program för att visa hur du kan använda regex för att validera inkommande data.
#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'< Produktion:

Detta program matchar den inmatning som användaren matat in för att validera om det är ett heltal. Ovanstående utdata visar att när ett heltal matas in ger det ett lämpligt meddelande och när någon annan data matas in ger det meddelandet som ogiltig inmatning.
gratis videokonverteringsprogramvara för pc
Slutsats
Regex används i sökmotorer för att söka efter mönster, söka och ersätta dialoger för applikationer som ordbehandlare och textredigerare. Regex används också i UNIX-verktyg som sed, awk samt lexikalisk analys av programmet.
Vi har sett funktionerna som används för att matcha, söka och ersätta mönster i denna handledning. Med hjälp av dessa funktioner kan vi i grunden utveckla en effektiv applikation som implementerar önskad funktionalitet med hjälp av regex.
Regex gör det möjligt att effektivt verifiera inmatningen eller sökningen och ersätta en sträng genom att lappa mönster och detta kan göras med ett fåtal rader C ++ - kod.
Läs också => Java Regular Expression Tutorial
=> Kontrollera ALLA C ++ -handledning här.
Rekommenderad läsning
- MongoDB Regular Expression $ regex med exempel
- Python DateTime-handledning med exempel
- Hur man använder Unix Regular Expressions
- Java Array Length Tutorial With Code Exempel
- Unix Shell Scripting Tutorial med exempel
- MongoDB Sharding Tutorial med exempel
- Selen Find Element by Text Tutorial med exempel
- Handledning för Unix Pipes: Rör i Unix-programmering