c regex tutorial regular expressions c with examples
El tutorial sobre expressions regulars de C ++ o Regex explica el funcionament de l’expressió regular a C ++, inclosa la funcionalitat de coincidència de l’expressió regular, cerca, substitució, validació d’entrada i tokenització:
Les expressions regulars o regexs o regexp, com se solen anomenar, s’utilitzen per representar un patró particular de cadena o text. Els regexes s’utilitzen sovint per denotar una sintaxi textual estàndard d’una cadena.
=> Visiteu aquí per veure la sèrie de formació C ++ per a tothom.
Cada caràcter d'una expressió regular té un caràcter amb un significat literal o un 'metacaracter' que té un significat especial.
Per exemple , una expressió regular 'a [a-z]' pot tenir valors 'aa', 'ab', 'ax', etc. Aquí a té un significat literal i [a-z] denota qualsevol caràcter en minúscula de la a la la z.
Per descomptat, l’exemple anterior és el més senzill. Podem tenir una expressió regular amb patrons més complexos que coincideixin.
Gairebé tots els llenguatges de programació ofereixen suport per a l’expressió regular. C ++ té suport directe per a regexes a partir de C ++ 11. A part dels llenguatges de programació, la majoria dels programes de processament de text com lexers, editors de text avançats, etc. utilitzen expressions regulars.
En aquest tutorial, explorarem els detalls de les expressions regulars en general, així com pel que fa a la programació C ++.
Què aprendreu:
- Expressió regular (expressió regular) a C ++
- Plantilles de funcions que s’utilitzen a l’expressió regular C ++
- Validació d'entrada C ++
- Conclusió
Expressió regular (expressió regular) a C ++
Una expressió regular o expressió regular és una expressió que conté una seqüència de caràcters que defineixen un patró de cerca concret que es pot utilitzar en algorismes de cerca de cadenes, cercar o trobar / substituir algorismes, etc. Els regexes també s’utilitzen per a la validació d’entrada.
La majoria dels llenguatges de programació ofereixen una capacitat integrada per a l'expressió regular o a través de biblioteques. A partir de C ++ 11, C ++ proporciona suport regular per mitjà de la biblioteca estàndard a través de la capçalera.
Un processador d'expressió regular que s'utilitza per analitzar una expressió regular es tradueix en una representació interna que s'executa i es fa coincidir amb una cadena que representa el text que es busca. C ++ 11 utilitza la gramàtica ECMAScript com a gramàtica per defecte per a l’expressió regular. ECMAScript és senzill, tot i que proporciona potents funcions d'expressió regular.
Vegem alguns dels patrons que especifiquem a l’expressió regular, com ara Especificació d’interval, Patrons repetits, etc.
Especificacions de rang
Especificar un rang de caràcters o literals és un dels criteris més senzills que s’utilitzen en una regla regular.
Per exemple, podem especificar un rang de lletres minúscules de la a a la següent:
[a-z]
Això coincidirà exactament amb un caràcter en minúscula.
Els criteris següents,
[A-Za-z0-9]
L'expressió anterior especifica l'interval que conté un sol caràcter en majúscula, un caràcter en minúscula i un dígit del 0 al 9.
Els claudàtors ([]) de les expressions anteriors tenen un significat especial, és a dir, s’utilitzen per especificar l’interval. Si voleu incloure un claudàtor com a part d’una expressió, haureu d’escapar-ne.
Així doncs, la següent expressió,
[ [0-9]
L'expressió anterior indica un claudàtor d'obertura i un dígit en l'interval de 0 a 9 com a regla regular.
Però tingueu en compte que, a mesura que estem programant en C ++, hem d’utilitzar la seqüència d’escapament específica de C ++ de la següent manera:
[\ [0-9]
Patró repetit
Els exemples d'interval que hem especificat anteriorment només coincideixen amb un caràcter o literal. Si volem fer coincidir més d'un caràcter, normalment especifiquem el 'modificador d'expressió' juntament amb el patró, convertint-lo en un patró repetit.
Un modificador d'expressió pot ser '+' que suggereix fer coincidir l'ocurrència d'un patró una o més vegades o pot ser '*' que suggereix fer coincidir l'ocurrència d'un patró zero o més vegades.
Per exemple,l'expressió següent,
[a-z] + coincideix amb les cadenes com a, aaa, abcd, softwaretestinghelp, etc. Tingueu en compte que mai no coincidirà amb una cadena en blanc.
L'expressió,
[a-z] * coincidirà amb una cadena en blanc o amb qualsevol de les cadenes anteriors.
Si voleu especificar un grup de caràcters que coincideixi una o més vegades, podeu utilitzar els parèntesis de la següent manera:
(Xyz) +
L'expressió anterior coincidirà amb Xyz, XyzXyz i XyzXyzXyz, etc.
Exemple de regex de C ++
Penseu en una expressió regular que coincideixi amb un nom de fitxer MS-DOS com es mostra a continuació.
char regex_filename[] = “[a-zA-Z_] [a-zA-Z_0-9]*\.[a-zA-Z0-9]+”;
La regla anterior es pot interpretar de la següent manera:
Feu coincidir una lletra (minúscula i després majúscula) o un subratllat. A continuació, feu coincidir zero o més caràcters, en què cadascun pot ser una lletra, un subratllat o un dígit. A continuació, feu coincidir un punt literal (.). Després del punt, feu coincidir un o més caràcters, en què cadascun pot ser una lletra o un dígit que indiqui l'extensió del fitxer.
Plantilles de funcions que s’utilitzen a l’expressió regular C ++
Analitzem ara algunes de les plantilles de funcions importants mentre programem l’expressió regular en C ++.
regex_match ()
Aquesta plantilla de funció s'utilitza per coincidir amb el patró donat. Aquesta funció torna cert si l'expressió donada coincideix amb la cadena. En cas contrari, la funció retorna false.
A continuació es mostra un exemple de programació C ++ que demostra la funció regex_match.
#include #include #include using namespace std; int main () { if (regex_match ('softwareTesting', regex('(soft)(.*)') )) cout Sortida:
En el programa anterior, primer, coincidim la cadena 'softwareTesting' amb l'expressió regular '(' (suau) (. *) 'Mitjançant la funció regex_match. Posteriorment, també demostrem diferents variacions de regex_match passant-li un objecte de cadena, abast, etc.
regex_search ()
La funció regex_search () s'utilitza per buscar un patró a la cadena que coincideixi amb l'expressió regular.
Penseu en el següent programa C ++ que mostra l'ús de 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:'< Sortida:
Especifiquem una cadena i, a continuació, una expressió regular mitjançant l’objecte regex. Aquesta cadena i aquesta expressió regular es passen a la funció regex_search juntament amb el tipus de marca smatch. La funció cerca la primera aparició del patró a la cadena d'entrada i retorna la cadena coincident.
regex_replace ()
La funció regex_replace () s'utilitza per substituir el patró que coincideix amb una expressió regular per una cadena.
Utilitzem un programa C ++ per demostrar la funció regex_replace ().
#include #include #include #include using namespace std; int main() { string mystr = 'This is software testing Help portal
'; cout<<'Input string: '< Sortida:
Aquí tenim una cadena d’entrada. Proporcionem una expressió regular per fer coincidir una cadena que comença per 'p'. A continuació, substituïm la paraula coincident per la paraula 'lloc web'. A continuació, substituïm la paraula 'lloc web' al portal.
Validació d'entrada C ++
Hem parlat de les principals plantilles de funcions que s’utilitzen per a la concordança de patrons mitjançant l’expressió regular. Cal destacar que el propòsit principal que serveix per a l'expressió regular és la validació d'entrada. Podeu validar l'entrada introduïda des d'un dispositiu d'entrada estàndard mitjançant l'expressió d'expressió regular.
Consulteu el programa següent per demostrar com podeu utilitzar l'expressió regular per validar les dades entrants.
#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'< Sortida:
Aquest programa coincideix amb l’entrada introduïda per l’usuari per validar si es tracta d’un nombre enter. La sortida anterior mostra que quan s'introdueix un nombre enter, dóna un missatge adequat i, quan s'introdueixen altres dades, dóna el missatge com a entrada no vàlida.
què és un bon canviador de veu
Conclusió
Regex s’utilitza en motors de cerca per cercar patrons, cercar i substituir diàlegs d’aplicacions com processadors de text i editors de text. Regex també s'utilitza en utilitats UNIX com sed, awk, així com en l'anàlisi lèxica del programa.
Hem vist les funcions que s’utilitzen per fer coincidir, cercar i substituir patrons en aquest tutorial. Utilitzant aquestes funcions, bàsicament podem desenvolupar una aplicació eficient que implementi la funcionalitat desitjada mitjançant l’expressió regular.
Regex permet validar eficientment l’entrada o la cerca i substituir una cadena mitjançant un patró de pegat i això es pot fer utilitzant poques línies de codi C ++.
Llegiu també => Tutorial d’expressió regular de Java
=> Consulteu TOTS els tutorials de C ++ aquí.
Lectura recomanada
- Expressió regular de MongoDB $ regex amb exemple
- Tutorial de Python DateTime amb exemples
- Com s'utilitzen les expressions regulars d'Unix
- Tutorial de longitud de matriu de Java amb exemples de codi
- Tutorial de script Unix Shell amb exemples
- Tutorial de fragments de MongoDB amb exemple
- Tutorial Selenium Find Element By Text amb exemples
- Tutorial Unix Pipes: Pipes a la programació Unix