c regex tutorial regular expressions c with examples
De zelfstudie over C ++ reguliere expressies of regex legt de werking van regex in C ++ uit, inclusief de functionaliteit van regex-overeenkomst, zoeken, vervangen, invoervalidatie en tokenisatie:
Reguliere expressie of regexes of regexp zoals ze gewoonlijk worden genoemd, worden gebruikt om een bepaald patroon van tekenreeksen of tekst weer te geven. Regexes worden vaak gebruikt om een standaard tekstuele syntaxis van een string aan te duiden.
Bezoek hier om de C ++ Training Series For All te zien.
Elk teken in een reguliere expressie heeft een teken met een letterlijke betekenis of een 'metateken' met een speciale betekenis.
Bijvoorbeeld kan een reguliere expressie 'a (a-z)' de waarden ‘aa’, ‘ab’, ’ax’ enz. hebben. Hier heeft a een letterlijke betekenis en (a-z) staat voor elk kleine letterteken van a tot z.
Het bovenstaande voorbeeld is natuurlijk het eenvoudigste. We kunnen een reguliere expressie hebben met complexere patronen die bij elkaar passen.
Bijna alle programmeertalen bieden ondersteuning voor regexes. C ++ heeft directe ondersteuning voor regexes vanaf C ++ 11. Afgezien van programmeertalen, gebruiken de meeste tekstverwerkingsprogramma's zoals lexers, geavanceerde teksteditors, enz. Regexes.
In deze tutorial zullen we de details van regexes in het algemeen onderzoeken, evenals met betrekking tot C ++ programmeren.
Wat je leert:
- Reguliere expressie (regex) in C ++
- Functiesjablonen die worden gebruikt in C ++ regex
- C ++ Input Validatie
- Gevolgtrekking
Reguliere expressie (regex) in C ++
Een reguliere expressie of regex is een expressie die een reeks tekens bevat die een bepaald zoekpatroon definiëren dat kan worden gebruikt in algoritmen voor het zoeken naar tekenreeksen, algoritmen voor zoeken of zoeken / vervangen, enz. Regexes worden ook gebruikt voor invoervalidatie.
De meeste programmeertalen bieden ofwel ingebouwde mogelijkheid voor regex of via bibliotheken. Vanaf C ++ 11 biedt C ++ regex-ondersteuning door middel van de standaardbibliotheek via de header.
Een regex-processor die wordt gebruikt om een regex te parseren, vertaalt deze in een interne representatie die wordt uitgevoerd en vergeleken met een string die de tekst vertegenwoordigt die wordt doorzocht. C ++ 11 gebruikt ECMAScript-grammatica als de standaardgrammatica voor regex. ECMAScript is eenvoudig, maar biedt krachtige regex-mogelijkheden.
Laten we eens kijken naar enkele van de patronen die we specificeren in regex, zoals bereikspecificatie, herhaalde patronen, enz.
Bereikspecificaties
Het specificeren van een reeks tekens of letterlijke tekens is een van de eenvoudigste criteria die in een regex worden gebruikt.
Bijvoorbeeld, we kunnen een reeks kleine letters van a tot z als volgt specificeren:
(a-z)
Dit komt overeen met exact één kleine letter.
De volgende criteria,
(A-Za-z0-9)
De bovenstaande uitdrukking specificeert het bereik met één hoofdletter, één kleine letter en een cijfer van 0 tot 9.
De haakjes (()) in de bovenstaande uitdrukkingen hebben een speciale betekenis, d.w.z. ze worden gebruikt om het bereik te specificeren. Als u een haakje als onderdeel van een uitdrukking wilt opnemen, moet u eraan ontsnappen.
Dus de volgende uitdrukking,
( (0-9)
De bovenstaande uitdrukking geeft een openingshaakje en een cijfer in het bereik van 0 tot 9 aan als een regex.
Maar merk op dat terwijl we programmeren in C ++, we de C ++ -specifieke escape-reeks als volgt moeten gebruiken:
(\ (0-9)
Herhaald patroon
De bereikvoorbeelden die we hierboven hebben gespecificeerd, komen overeen met slechts één teken of letterlijk. Als we meer dan één teken willen matchen, specificeren we gewoonlijk de 'expressie-modifier' samen met het patroon, waardoor het een herhaald patroon wordt.
Een expressiemodificator kan '+' zijn die suggereert dat het voorkomen van een patroon een of meerdere keren overeenkomt, of het kan '*' zijn dat suggereert dat het voorkomen van een patroon nul of meer keer overeenkomt.
Bijvoorbeeld,de volgende uitdrukking,
(a-z) + komt overeen met de strings zoals a, aaa, abcd, softwaretestinghelp, etc. Merk op dat het nooit zal overeenkomen met een lege string.
De uitdrukking,
(a-z) * komt overeen met een lege string of een van de bovenstaande strings.
Als u een groep tekens wilt specificeren om een of meerdere keren overeen te komen, dan kunt u de haakjes als volgt gebruiken:
(Xyz) +
De bovenstaande uitdrukking komt overeen met Xyz, XyzXyz en XyzXyzXyz, enz.
C ++ regex Voorbeeld
Overweeg een reguliere expressie die overeenkomt met een MS-DOS-bestandsnaam, zoals hieronder wordt weergegeven.
De bovenstaande regex kan als volgt worden geïnterpreteerd:
Zoek een letter (kleine letters en dan hoofdletters) of een onderstrepingsteken. Zoek vervolgens nul of meer tekens, waarbij elk een letter, een onderstrepingsteken of een cijfer kan zijn. Zoek vervolgens een letterlijke punt (.). Zoek na de punt een of meer tekens, waarbij elk een letter of cijfer kan zijn dat de bestandsextensie aangeeft.
Functiesjablonen die worden gebruikt in C ++ regex
Laten we nu enkele van de belangrijke functiesjablonen bespreken tijdens het programmeren van regex in C ++.
regex_match ()
Dit functiesjabloon wordt gebruikt om overeen te komen met het gegeven patroon. Deze functie retourneert waar als de gegeven uitdrukking overeenkomt met de tekenreeks. Anders retourneert de functie false.
Hieronder volgt een C ++ programmeervoorbeeld dat de regex_match-functie demonstreert.
Uitgang:
In het bovenstaande programma vergelijken we eerst de string 'softwareTesting' met de reguliere expressie '(' (soft) (. *) 'Met behulp van de regex_match-functie. Vervolgens demonstreren we ook verschillende variaties van regex_match door het een string-object door te geven, bereik, etc.
regex_search ()
De functie regex_search () wordt gebruikt om te zoeken naar een patroon in de string dat overeenkomt met de reguliere expressie.
Beschouw het volgende C ++ -programma dat het gebruik van regex_search () laat zien.
Uitgang:
We specificeren een string en vervolgens een reguliere expressie met behulp van het regex-object. Deze tekenreeks en regex worden samen met het type smatch-vlag doorgegeven aan de functie regex_search. De functie zoekt naar het eerste voorkomen van patroon in de invoertekenreeks en retourneert de overeenkomende tekenreeks.
regex_replace ()
De functie regex_replace () wordt gebruikt om de patroonovereenkomst met een reguliere expressie te vervangen door een string.
Laten we een C ++ -programma gebruiken om de functie regex_replace () te demonstreren.
Uitgang:
Hier hebben we een invoertekenreeks. We bieden een reguliere expressie die overeenkomt met een tekenreeks die begint met ‘p’. Vervolgens vervangen we het overeenkomende woord door het woord ‘website’. Vervolgens vervangen we het woord ‘website’ terug naar de portal.
C ++ Input Validatie
We hebben de belangrijkste functiesjablonen besproken die worden gebruikt voor het matchen van patronen met behulp van regex. Het is opmerkelijk dat het belangrijkste doel van regex is invoervalidatie. U kunt de invoer die is ingevoerd vanaf een standaardinvoerapparaat valideren met de regex-expressie.
Bekijk het onderstaande programma om te demonstreren hoe u de regex kunt gebruiken om inkomende gegevens te valideren.
Uitgang:
Dit programma komt overeen met de invoer die door de gebruiker is ingevoerd om te valideren of het een geheel getal is. De bovenstaande uitvoer laat zien dat wanneer een geheel getal wordt ingevoerd, dit een passend bericht geeft en wanneer andere gegevens worden ingevoerd, het bericht als ongeldige invoer wordt weergegeven.
hoe een binair bestand in Windows te openen
Gevolgtrekking
Regex wordt in zoekmachines gebruikt om patronen te zoeken, dialoogvensters te zoeken en te vervangen van toepassingen zoals tekstverwerkers en teksteditors. Regex wordt ook gebruikt in UNIX-hulpprogramma's zoals sed, awk en ook in lexicale analyse van het programma.
We hebben de functies gezien die worden gebruikt om patronen te matchen, te zoeken en te vervangen in deze tutorial. Met behulp van deze functies kunnen we in feite een efficiënte applicatie ontwikkelen die de gewenste functionaliteit implementeert met behulp van regex.
Regex maakt het mogelijk om de invoer of het zoeken efficiënt te valideren en een string te vervangen door een patroon te patchen en dit kan worden gedaan met behulp van een paar regels C ++ - code.
Lees ook => Zelfstudie over reguliere expressie in Java
Bekijk hier ALLE C ++ Tutorials.
Aanbevolen literatuur
- MongoDB reguliere expressie $ regex met voorbeeld
- Python DateTime-zelfstudie met voorbeelden
- Hoe Unix reguliere expressies te gebruiken
- Zelfstudie over Java-array-lengte met codevoorbeelden
- Unix Shell Scripting Tutorial met voorbeelden
- MongoDB Sharding-zelfstudie met voorbeeld
- Selenium Find Element By Text Tutorial met voorbeelden
- Unix Pipes-zelfstudie: Pipes in Unix-programmering