c regex tutorial regular expressions c with examples
Selvstudiet om C ++ regulære udtryk eller Regex forklarer, hvordan regex fungerer i C ++, herunder funktionaliteten af regex-match, søg, erstat, inputvalidering og tokenisering:
Regular Expression eller regexes eller regexp, som de ofte kaldes, bruges til at repræsentere et bestemt mønster af streng eller tekst. Regexes bruges ofte til at betegne en standard tekstsyntaks for en streng.
=> Besøg her for at se C ++ træningsserien for alle.
Hver karakter i et regulært udtryk har enten et tegn med en bogstavelig betydning eller en 'metakarakter', der har særlig betydning.
For eksempel , et regulært udtryk 'a (a-z)' kan have værdierne 'aa', 'ab', 'ax' osv. Her har a en bogstavelig betydning og (a-z) betegner enhver lille bogstav fra a til z.
Naturligvis er ovenstående eksempel det enkleste. Vi kan have et regelmæssigt udtryk med mere komplekse mønstre, der skal matches.
Næsten alle programmeringssprogene understøtter regexes. C ++ har direkte support til regexer fra og med C ++ 11. Bortset fra programmeringssprog bruger de fleste tekstbehandlingsprogrammer som lexers, avancerede teksteditorer osv. Regexer.
I denne vejledning vil vi udforske detaljerne i regexes generelt såvel som med hensyn til C ++ programmering.
Hvad du lærer:
- Regular Expression (regex) I C ++
- Funktionsskabeloner, der bruges i C ++ regex
- C ++ input validering
- Konklusion
Regular Expression (regex) I C ++
Et regulært udtryk eller en regex er et udtryk, der indeholder en sekvens af tegn, der definerer et bestemt søgemønster, der kan bruges i strengsøgningsalgoritmer, finde eller finde / erstatte algoritmer osv. Regexes bruges også til validering af input.
De fleste af programmeringssprogene giver enten indbygget kapacitet til regex eller gennem biblioteker. Fra og med C ++ 11 yder C ++ regex-support ved hjælp af standardbiblioteket via headeren.
En regex-processor, der bruges til at analysere en regex, oversætter den til en intern repræsentation, der udføres og matches til en streng, der repræsenterer den tekst, der søges i. C ++ 11 bruger ECMAScript-grammatik som standardgrammatik for regex. ECMAScript er simpelt, men alligevel giver det kraftige regex-funktioner.
Lad os se nogle af de mønstre, som vi specificerer i regex som Range Specification, Gentagne mønstre osv.
Rækkevidde Specifikationer
At specificere en række tegn eller bogstaver er et af de enkleste kriterier, der bruges i en regex.
For eksempel, Vi kan specificere en række små bogstaver fra a til z som følger:
(a-z)
Dette matcher nøjagtigt et lille tegn.
Følgende kriterier,
(A-Za-z0-9)
Ovenstående udtryk specificerer området, der indeholder et enkelt stort bogstav, et lille bogstav og et ciffer fra 0 til 9.
Beslagene (()) i ovenstående udtryk har en særlig betydning, dvs. de bruges til at specificere området. Hvis du vil inkludere en parentes som en del af et udtryk, skal du undslippe det.
Så følgende udtryk,
( (0-9)
Ovenstående udtryk angiver en åbningsbeslag og et ciffer i området 0 til 9 som en regex.
Men bemærk, at når vi programmerer i C ++, skal vi bruge den C ++ specifikke escape-sekvens som følger:
(\ (0-9)
Gentaget mønster
Områdeeksemplerne, som vi har angivet ovenfor, matcher kun et tegn eller bogstaveligt. Hvis vi ønsker at matche mere end et tegn, angiver vi normalt 'udtryksmodifikatoren' sammen med mønsteret og derved gør det til et gentaget mønster.
En udtryksmodifikator kan være '+', der antyder at matche forekomsten af et mønster en eller flere gange, eller det kan være '*', der antyder at matche forekomsten af et mønster nul eller flere gange.
For eksempel,følgende udtryk,
(a-z) + matcher strengene som a, aaa, abcd, softwaretestinghelp osv. Bemærk, at den aldrig matcher en tom streng.
Udtrykket,
(a-z) * vil matche en tom streng eller en af ovenstående strenge.
Hvis du vil specificere en gruppe tegn, der skal matche en eller flere gange, kan du bruge parenteserne som følger:
(Xyz) +
Ovenstående udtryk matcher Xyz, XyzXyz og XyzXyzXyz osv.
C ++ regex Eksempel
Overvej et regulært udtryk, der matcher et MS-DOS-filnavn som vist nedenfor.
char regex_filename() = “(a-zA-Z_) (a-zA-Z_0-9)*\.(a-zA-Z0-9)+”;
Ovenstående regex kan fortolkes som følger:
Match et bogstav (små og store bogstaver) eller en understregning. Match derefter nul eller flere tegn, hvor hver kan være et bogstav eller en understregning eller et ciffer. Match derefter en bogstavelig prik (.). Efter prikken skal du matche et eller flere tegn, hvor hver kan være et bogstav eller ciffer, der angiver filtypenavnet.
Funktionsskabeloner, der bruges i C ++ regex
Lad os nu diskutere nogle af de vigtige funktionsskabeloner, mens vi programmerer regex i C ++.
regex_match ()
Denne funktionsskabelon bruges til at matche det givne mønster. Denne funktion returnerer sand, hvis det givne udtryk matcher strengen. Ellers returnerer funktionen falsk.
Følgende er et C ++ programmeringseksempel, der demonstrerer regex_match-funktionen.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Produktion:
I ovenstående program matcher vi først strengen 'softwareTesting' mod det regulære udtryk '(' (soft) (. *) 'Ved hjælp af funktionen regex_match. Derefter demonstrerer vi også forskellige variationer af regex_match ved at sende den til et strengobjekt, rækkevidde osv.
regex_search ()
Funktionen regex_search () bruges til at søge efter et mønster i strengen, der matcher det regulære udtryk.
Overvej følgende C ++ - program, der viser brugen af 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 specificerer en streng og derefter et regulært udtryk ved hjælp af regex-objektet. Denne streng og regex sendes til regex_search-funktionen sammen med smatch-flagtypen. Funktionen søger efter den første forekomst af mønster i inputstrengen og returnerer den matchede streng.
regex_replace ()
Funktionen regex_replace () bruges til at erstatte mønstermatchning til et regulært udtryk med en streng.
Lad os bruge et C ++ - program til at demonstrere funktionen regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Produktion:
Her har vi en inputstreng. Vi leverer et regulært udtryk, der matcher en streng, der starter med 'p'. Derefter erstatter vi det matchede ord med ordet 'hjemmeside'. Dernæst erstatter vi ordet 'website' tilbage til portalen.
C ++ input validering
Vi har diskuteret de vigtigste funktionsskabeloner, der bruges til mønstermatchning ved hjælp af regex. Det er bemærkelsesværdigt, at det vigtigste formål, som regex tjener, er inputvalidering. Du kan validere det input, der er indtastet fra en standardinputenhed ved hjælp af regex-udtrykket.
Tjek nedenstående program for at demonstrere, hvordan du kan bruge regex til at validere indgående 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:
Dette program matcher det input, der er indtastet af brugeren for at validere, hvis det er et heltal. Ovenstående output viser, at når et helt tal indtastes, giver det en passende besked, og når andre data indtastes, giver det beskeden som ugyldig input.
gratis timeseddelssoftware til små virksomheder
Konklusion
Regex bruges i søgemaskiner til at søge i mønstre, søge og erstatte dialoger i applikationer som tekstbehandlingsprogrammer og teksteditorer. Regex bruges også i UNIX-værktøjer som sed, awk såvel som leksikalsk analyse af programmet.
Vi har set de funktioner, der bruges til at matche, søge og erstatte mønstre i denne vejledning. Ved hjælp af disse funktioner kan vi dybest set udvikle en effektiv applikation, der implementerer den ønskede funktionalitet ved hjælp af regex.
Regex giver mulighed for effektiv validering af input eller søgning og udskiftning af en streng ved at lappe mønster, og dette kan gøres ved hjælp af meget få linjer C ++ - kode.
Læs også => Java Regular Expression Tutorial
=> Tjek ALLE C ++ tutorials her.
Anbefalet læsning
- MongoDB Regular Expression $ regex med eksempel
- Python DateTime-tutorial med eksempler
- Sådan bruges Unix regulære udtryk
- Java Array Length Tutorial med kodeeksempler
- Unix Shell Scripting Tutorial med eksempler
- MongoDB Sharding Tutorial med eksempel
- Selen Find Element By Text Tutorial med eksempler
- Unix Pipes Tutorial: Pipes in Unix Programming