c regex tutorial what is c regular expression
Deze C # Regex-zelfstudie legt uit wat een reguliere expressie is in C #, de syntaxis ervan, Regex-klassemethoden en hoe je deze methoden kunt gebruiken met behulp van voorbeelden:
De reguliere expressie in de C # wordt gebruikt om een bepaald tekenpatroon te matchen. Reguliere expressies worden gebruikt wanneer een gebruiker een herhalend patroon moet vinden of een gegevensvalidatie moet uitvoeren of zelfs om de gegevensopmaak te controleren.
Een RegEx wordt gebruikt om te bepalen of een string een bepaald karakterpatroon bevat of overeenkomt. Een regex is in de eerste plaats een tekenreeks die een patroon aangeeft.
Een patroon kan van alles zijn, van cijfers, tekens of een combinatie van alles. Regex wordt veel gebruikt voor validatie. Parsing of matching strings, bijvoorbeeld, zoeken of een tekenreeks overeenkomt met het valutanotatie, telefoonnummer of datumnotatie.
Lees de Easy C # Training Series door.
beste schijf klonen software windows 10
Wat je leert:
Regex-klasse in C #
Regex-klasse wordt gebruikt in C # om regex-bewerkingen uit te voeren. Het bevat verschillende methoden die kunnen worden gebruikt om verschillende bewerkingen uit te voeren met betrekking tot regex.
Het kan worden gebruikt om grote tekst te ontleden om een bepaalde tekenreeks te vinden door methoden te gebruiken die kunnen worden gebruikt om een overeenkomst uit te voeren, om de tekenreeks te vervangen of te splitsen.
De regex-klasse is aanwezig in de naamruimte; System.Text.RegularExpression. De klasse accepteert een string in de vorm van een tekenreeks als parameter.
C # Regex-methoden
IsMatch
De eenvoudigste en handigste methode in de klasse Regex is de IsMatch-methode. Deze methode heeft verschillende overbelastingen voor het matchen van tekens op basis van verschillende parameters.
De eenvoudigste is IsMatch (tekenreeks) Met deze methode kan de gebruiker een tekenreeks opgeven om een tekenreeks te matchen.
De tweede overbelasting IsMatch (string text, int position). Deze methode retourneert een Booleaanse waarde en heeft twee (string en integer) parameters nodig. De stringtekst die in de parameter is opgegeven, is in feite een regex-constructor die overeenkomt met de tekenreeks vanaf de startpositie die is opgegeven door de parameter integer.
Deze methode zal dus proberen om de tekenreeksinvoer te matchen op de positie die wordt opgegeven door een integer-parameter in een gegeven tekenreeks.
De derde overbelasting, IsMatch (String-tekst, String-patroon) accepteert twee parameters en retourneert een Booleaanse waarde. De eerste parameter is tekst waarin de gebruiker een patroon moet vinden en de volgende parameter geeft het patroon aan waarnaar de gebruiker in de gegeven tekst zoekt.
Aanbevolen lezing = >> Patroonaanpassing in MySQL
Replace (String text, String replacementText)
De vervangingsmethode accepteert twee parameters en retourneert een tekenreekswaarde. De eerste parameter is de tekenreeks of regex die u voor overeenkomst wilt gebruiken en de tweede is de vervanging van de regex.
De methode werkt door een overeenkomst te vinden met de gegeven tekst en deze vervolgens te vervangen door de vervangende tekst die door de gebruiker is verstrekt. De handtekening van de methode is public string Replace (string text, string replacementText)
Publieke string () Split (string text)
De split-methode van de regex-klasse accepteert stringinvoer als een parameter en retourneert een array met subtekenreeksen. De parameter die in de methode wordt doorgegeven, is de string die moet worden gesplitst.
De methode vindt het overeenkomende invoerpatroon in de tekenreeks en zodra het een overeenkomend patroon identificeert, splitst het de tekenreeks op die plaats in kleinere deelstring, waarbij elk overeenkomend patroon het breekpunt is. De methode retourneert vervolgens een array met alle subtekenreeksen.
Gebruik van Regex C # -methoden
Laten we het gebruik van deze methoden eens bekijken door een eenvoudig programma te schrijven.
De output van het bovenstaande programma
Klopt
Klopt
Klopt
Vervang Wereld
Hallo
Wereld
Vandaag
De uitleg voor de bovenstaande code:
Aan het begin van het programma hebben we een object gemaakt en voor het patroon dat we zullen gebruiken voor de code-matching in de volgende tekenreeksinvoer, hebben we tekstopmaak gebruikt om het in het begin eenvoudig te houden, maar als je je op je gemak voelt, kan dat beginnen met het gebruik van reguliere expressiepatronen. (We zullen het reguliere-expressiepatroon in detail bespreken terwijl we verder gaan in deze tutorial)
Vervolgens zullen we match string gebruiken om de factor in te voeren die we hebben gedeclareerd als het gespecificeerde object met de input string en als het overeenkomt, zal het terugkeren om false te retourneren.
De volgende methode die we hebben gebruikt is IsMethod (string input, int index). Deze methode accepteert twee parameters, en hier geven we een invoertekenreeks en de index van waar de overeenkomst moet beginnen. Bijvoorbeeld, hier wilden we de matching starten vanaf het begin van de invoerstring.
Vervolgens demonstreerden we het gebruik van IsMatch (stringinvoer, stringpatroon). Hier hebben we de invoertekenreeks opgegeven, dan wilden we uitzoeken of de patroontekst in de invoer aanwezig is of niet. Als het aanwezig is, zal het true retourneren (zoals in ons geval), anders zal het false retourneren.
Een andere methode die we hebben besproken, is vervangen. Deze methode is erg handig in programma's waarin u wijzigingen wilt aanbrengen in de invoergegevens of het formaat van de bestaande gegevens wilt wijzigen.
Hier geven we twee parameters, de eerste is de invoertekenreeks en de tweede is de tekenreeks die kan worden gebruikt om de vorige tekenreeks te vervangen. Deze methode gebruikt ook het patroon dat is gedefinieerd in het regex-object dat we eerder hebben gedefinieerd.
Een andere belangrijke methode die we hebben gebruikt, is splitsen. Deze methode wordt gebruikt om de gegeven string te splitsen op basis van enkele terugkerende patronen. Hier hebben we een string 'Hello_World_Today' opgegeven.
Laten we zeggen dat we het onderstrepingsteken uit de gegeven string willen verwijderen en de subtekenreeksen willen ophalen. Hiervoor specificeren we de invoerparameter en vervolgens geven we het patroon dat we als splitsingspunt moeten gebruiken. De methode retourneert een array en we kunnen een eenvoudige lus zoals foreach gebruiken om alle strings op te halen.
Syntaxis van reguliere expressies
Er zijn verschillende syntaxis, zoals speciale tekens, kwantoren, tekenklassen, enz. Die kunnen worden gebruikt om een bepaald patroon van een bepaalde invoer te matchen.
In dit deel van de tutorial duiken we diep in de syntaxis die door regex wordt aangeboden en zullen we proberen een aantal real-life scenario's op te lossen door ze te gebruiken. Voordat we verder gaan, moet u ervoor zorgen dat u het basisidee van regex en de verschillende beschikbare methoden binnen de regex-klasse hebt opgedaan.
Speciale karakters
Speciale tekens in een regex worden gebruikt om verschillende betekenissen aan een patroon toe te kennen. We zullen nu enkele van de veelgebruikte speciale tekens en hun betekenis in Regex.3 bekijken
| Speciale karakters | Betekenis |
|---|---|
| w en W | Kleine letters ‘w’ worden gebruikt om overeen te komen met alfanumerieke tekens / onderstrepingstekens en hoofdletters ‘W’ worden gebruikt om overeen te komen met niet-woordtekens. |
| | Dit is een van de meest gebruikte syntaxis. Het geeft het begin aan, het woord of patroon nadat dit begint te matchen vanaf het begin van de invoertekst. |
| | Dit teken wordt gebruikt voor het matchen van woorden vanaf het einde van de string. Woorden / patronen die vóór dit symbool worden aangegeven, komen overeen met de woorden aan het einde van de string. |
| (punt) | Punt wordt gebruikt om een enkel teken in de gegeven tekenreeks te matchen die één keer voorkomt. |
| n | Dit wordt gebruikt voor een nieuwe regel. |
| d en D | Kleine letters ‘d’ worden gebruikt om overeen te komen met een cijferteken en hoofdletters ‘D’ worden gebruikt om niet-cijferige tekens te zoeken. |
| s en S | Kleine letters ‘s’ worden gebruikt om overeen te komen met spaties en hoofdletters ‘S’ worden gebruikt om overeen te komen met niet-spaties. |
Quantifier Syntax
Quantifier-syntaxis wordt gebruikt om de overeenkomende criteria te tellen of te kwantificeren. Bijvoorbeeld, als je wilt controleren of een bepaalde string een of meerdere keren een alfabet bevat. Laten we eens kijken naar enkele veelgebruikte kwantoren in reguliere expressies.
| Quantifier Syntax | Betekenis |
|---|---|
| | Dit symbool wordt gebruikt om overeen te komen met het voorgaande teken. |
| | Dit symbool wordt gebruikt om een of meer karakters op een rij te matchen. |
| {n} | Het numerieke cijfer tussen de accolades wordt gebruikt om overeen te komen met het nummer van het voorgaande teken dat is gedefinieerd door numerieke accolades. |
| {n,} | Het cijfer tussen accolades en dit symbool wordt gebruikt om ervoor te zorgen dat het overeenkomt met ten minste n (d.w.z. cijferwaarde tussen accolades). |
| {n, m} | Dit symbool wordt gebruikt voor het matchen van het voorgaande teken van n aantal keer tot m aantal keer. |
| | Dit symbool zorgt ervoor dat voorgaande tekens overeenkomen als optioneel. |
Karakterklasse
De tekenklasse is ook bekend als tekensets, en dit wordt gebruikt om de regex-engine te vertellen om een enkele overeenkomst uit verschillende tekens te zoeken. Een tekenklasse komt overeen met slechts één teken en de volgorde van de tekens in de tekenset doet er niet toe.
| Karakterklasse | Betekenis |
|---|---|
| (bereik) | Het vierkante haakjesymbool wordt gebruikt om overeen te komen voor een reeks tekens. We kunnen het bijvoorbeeld gebruiken om elk teken in het bereik van het alfabet 'a' tot 'z' te definiëren door het bereik tussen haakjes te plaatsen, zoals (a-z) Of we kunnen ook matchen met numerieke '1' tot '9' door (1-9) aan te duiden |
| (^ bereik) | Dit duidt een negatieve karakterklasse aan. Het wordt gebruikt om iets te matchen, niet in het bereik dat binnen de haak is aangegeven. |
| | Dit wordt gebruikt om speciale tekens te matchen die hun eigen regex-symbolen kunnen hebben. De schuine streep wordt gebruikt om de speciale tekens in hun letterlijke vorm te matchen. |
Groepering
Ronde haakjes of haakjes kunnen worden gebruikt om een deel van de reguliere expressie samen te groeperen. Hierdoor kan de gebruiker een kwantor toevoegen aan de uitdrukking.
| Groepering | Betekenis |
|---|---|
| (groepsuitdrukking) | De ronde haakjes worden gebruikt om een uitdrukking te groeperen. |
| | De | operator wordt gebruikt binnen de ronde haak voor het gebruik van een alternatief, bijvoorbeeld (a | b). |
C # Voorbeelden van reguliere expressies
In de vorige sectie hebben we geleerd over de symbolen voor reguliere expressies, in deze sectie zullen we in detail kijken naar het gebruik van verschillende symbolen in reguliere expressies en de combinatie waarin ze kunnen worden gebruikt om verschillende expressies te matchen.
In deze zelfstudie bespreken we enkele van de meest voorkomende scenario's uit het echte leven waarmee u als ontwikkelaar te maken kunt krijgen terwijl u aan een applicatie of in een eenvoudig programma werkt om gebruikersinvoer te krijgen.
Voorbeeld van reguliere expressie met scenario's uit het echte leven
Laten we meer leren over reguliere expressies aan de hand van enkele realtime voorbeelden.
Scenario 1: Valideer of de invoertekenreeks is samengesteld uit 6-cijferige hoofdletterongevoelige alfabettekens.
Een meest voorkomende scenario voor reguliere expressie is het vinden en matchen van een bepaald woord. Bijvoorbeeld, Laten we zeggen dat ik een willekeurige alfabetische tekenreeks van de gebruiker wil en die invoer precies zes cijfers lang moet zijn.
Om dat te valideren, kunnen we een eenvoudige reguliere expressie gebruiken. Laten we een programma schrijven om het schrijven en gebruiken van reguliere expressies op een betere manier te begrijpen.
Uitvoer
Klopt
Vals
Uitleg
In dit voorbeeld proberen we een invoertekenreeks te valideren om te controleren of deze alfabetische tekens van zes cijfers bevat. De karakters kunnen zowel in kleine letters als in hoofdletters staan, dus daar moeten we ook rekening mee houden.
Dus hier hebben we een reguliere expressiepatroon gedefinieerd in variabele 'patternText' en vervolgens doorgegeven aan het regex-object. Nu zijn de volgende regels code vrij eenvoudig, we hebben de IsMatch-methode gebruikt om de reguliere expressie en de invoertekenreeks te vergelijken.
Laten we nu eens kijken naar de reguliere expressie die we hebben bedacht. De uitdrukking (^ (a-zA-Z) {6} $) bestaat uit 4 verschillende delen. '^', '(A-zA-Z)', '{6}' en '$'. Het tweede deel geeft de overeenkomende tekens aan, die worden gebruikt om het afstemmen van uitdrukkingen uit te voeren, 'a-z' voor kleine letters en 'A-Z' voor hoofdletters.
Het eerste deelteken '^' zorgt ervoor dat de tekenreeks begint met een patroon dat in het tweede deel is gedefinieerd, d.w.z. kleine letters en hoofdletters.
De accolades in het derde deel bepalen het aantal tekens in de string dat kan worden geïdentificeerd door het gedefinieerde patroon, d.w.z. 6 in dit geval en het '$' -symbool zorgt ervoor dat het eindigt met het patroon dat in het tweede deel is gedefinieerd.
^ (a-zA-Z) {6} $
Scenario 2: Gebruik reguliere expressie om te valideren dat een woord dat begint met 'Super' en daarna witruimte heeft, d.w.z. om te valideren of 'Super' aanwezig is aan het begin van een zin.
Laten we aannemen dat we wat gebruikersinvoer lezen en ervoor moeten zorgen dat de gebruiker zijn zin altijd begint met een bepaald woord, cijfer of alfabet. Dit kan vrij eenvoudig worden bereikt door een eenvoudige reguliere expressie te gebruiken.
Laten we een voorbeeldprogramma bekijken en vervolgens in detail bespreken hoe u deze uitdrukking kunt schrijven.
Uitvoer
Klopt
Vals
Uitleg
Ook in dit voorbeeld hebben we een vergelijkbare code-setup gebruikt als in het eerste. Het reguliere-expressiepatroon in dit scenario vereist matching met een combinatie van woorden of zinnen die beginnen met “Super”.
^ Super
Omdat we dus vanaf het begin van de woordreeks willen matchen, beginnen we met het plaatsen van het '^' -symbool en geven we vervolgens het patroon dat we willen matchen, in dit geval 'Super'. Nu kan het patroon dat we hebben gemaakt '^ Super' overeenkomen met alle waarden van super, zelfs superman of bovennatuurlijk, maar we willen niet alleen het woord 'Super'.
Dit betekent dat er na het woord een spatie moet komen om het einde van het woord en het begin van een ander woord aan te geven. Om dat te doen zullen we symbool ' s' aan het patroon toevoegen en daardoor ons uiteindelijke patroon maken als
beste app voor het plannen van Instagram-berichten
^ Super s
Scenario 3: gebruik reguliere expressie om geldige bestandsnamen te vinden met de extensie van het afbeeldingsbestandstype.
Een ander belangrijk real-time scenario waarmee ontwikkelaars vaak worden geconfronteerd, is de validatie van bestandstypen. Stel dat we een uploadknop in de gebruikersinterface hebben, die alleen extensies van afbeeldingsbestanden kan accepteren.
We moeten het uploadbestand van de gebruiker valideren en hem informeren voor het geval hij het verkeerde bestandsformaat heeft geüpload. Dit kan eenvoudig worden bereikt door reguliere expressie te gebruiken.
Hieronder is een eenvoudig programma gegeven om dit te controleren.
Uitvoer
Klopt
Klopt
Klopt
Vals
Vals
Uitleg
Hier moeten we een bestandsnaam matchen. Een geldige bestandsnaam bestaat uit drie delen ( naam van bestand +. + bestandsextensie We moeten een reguliere expressie maken die bij alle drie de delen past. Laten we beginnen met het matchen van het eerste deel, d.w.z. de naam van het bestand. Een bestandsnaam kan alfanumerieke en speciale tekens bevatten.
Zoals eerder besproken is het symbool om dat aan te duiden “ w”. De bestandsnaam kan ook uit een of meer tekens bestaan, dus wordt het symbool '+' gebruikt. Combineer ze en we krijgen het symbool voor het eerste deel.
Beugel heeft dit in delen gescheiden. Het volgende deel is het puntsymbool. Omdat het puntsymbool zijn betekenis heeft in een regex, gebruiken we er een backslash voor om het een letterlijke betekenis te geven. Combineer beide en we hebben de eerste twee delen van de regex gedekt.
Nu, voor het derde en laatste deel, kunnen we direct de vereiste bestandsextensies definiëren, gescheiden door '|' OF-symbool. Dit kan vervolgens worden gescheiden door een cirkelvormige beugel in te sluiten. Een '$' -teken aan het einde zorgt ervoor dat de gedefinieerde extensies aan het einde van de string staan. Laten we ze nu combineren om de definitieve reguliere expressie te krijgen.
Als we dit nu in het programma gebruiken, kunnen we zien dat het overeenkomt met het juiste formaat en true retourneert, maar met ongeldige formaten false.
Scenario 4: gebruik reguliere expressie om de indeling van een websiteadres te valideren
Laten we aannemen dat we een webformulier hebben dat een webadres of domeinadres accepteert. We willen dat de gebruiker het juiste web- / domeinadres invoert tijdens het invullen van het formulier. Om te bepalen of de gebruiker een correct webadres heeft ingevoerd, kan een reguliere expressie erg handig zijn.
Uitvoer
Klopt
Vals
Uitleg
Hier willen we een geldige domeinnaam matchen met behulp van een reguliere expressie. Een geldige domeinnaam begint met de afkorting 'www' gevolgd door een punt (.), Daarna de naam van de website, daarna een punt (.) En aan het einde een domeinextensie.
Dus, net als in het vorige scenario, zullen we proberen het deel voor deel te matchen. Laten we beginnen met het matchen van 'www'. Een deel. We beginnen dus met het startsymbool en vervolgens als 'www'. Het is iets dat is opgelost, dus we gebruiken het startsymbool gevolgd door de exacte woorden die overeenkomen.
Daarna gaan we aan de slag met het tweede deel. Het tweede deel van het webadres kan elke alfanumerieke naam zijn. Dus hier zullen we vierkante haken gebruiken die aanwezig zijn in de tekenklasse om het bereik te definiëren dat moet worden afgestemd. Na het toevoegen van het tweede deel met het tweede deel geeft het ons.
Hier hebben we ook accolades toegevoegd om de minimale en maximale tekenlengte voor de websitenaam te definiëren. We hebben een minimum van 3 en een maximum van 20. U kunt elke gewenste minimum of maximum lengte opgeven.
Nu we het eerste en tweede deel van het webadres hebben afgedekt, houden we alleen het laatste deel over, namelijk domeinextensie. Het is vrij gelijkaardig aan wat we deden in het laatste scenario, we zullen rechtstreeks matchen met de domeinextensies door OR te gebruiken en elke geldige domeinextensie tussen de ronde haakjes te plaatsen.
Dus als we al deze bij elkaar optellen, hebben we een volledige reguliere expressie die overeenkomt met elk geldig webadres.
Scenario 5: gebruik reguliere expressie om de indeling van een e-mail-ID te valideren
Laten we aannemen dat we een aanmeldingsformulier op onze webpagina hebben waarin de gebruikers worden gevraagd hun e-mailadres in te voeren. Om voor de hand liggende redenen willen we niet dat ons formulier verder gaat met ongeldige e-mailadressen. Om te valideren of het door de gebruiker ingevoerde e-mailadres correct is of niet, kunnen we een reguliere expressie gebruiken.
Hieronder is een eenvoudig programma gegeven om een e-mailadres te valideren.
Uitvoer
Klopt
Klopt
Vals
Uitleg
Een geldig e-mailadres bevat alfabetten, cijfers en enkele speciale tekens zoals punt (.), Streepje (-) en onderstrepingstekens (_) gevolgd door het '@' -symbool, gevolgd door de domeinnaam en de domeinextensie.
We kunnen het e-mailadres dus in vier delen verdelen, d.w.z. e-mail-ID, '@' -symbool, de domeinnaam en de laatste is de domeinextensie.
Laten we beginnen met het schrijven van een reguliere expressie voor het eerste deel. Het kan alfanumeriek zijn met enkele speciale tekens. Stel dat we een expressiegrootte hebben van 5 tot 25 tekens. Net als hoe we het eerder hebben geschreven (in het e-mailscenario), kunnen we de volgende uitdrukking bedenken.
Nu, naar het tweede deel. Het is relatief eenvoudig omdat we maar één symbool hoeven te matchen, namelijk '@'. Het toevoegen aan de bovenstaande uitdrukking geeft ons.
Verhuizen naar het derde deel, d.w.z. de domeinnaam zal altijd een reeks kleine letters zijn. Als u wilt, kunt u ook numerieke of hoofdletters gebruiken, maar voor dit scenario gaan we voor kleine letters.
Als we de uitdrukking voor kleine letters met een lengte van 2 tot 12 tekens toevoegen, hebben we de volgende uitdrukking.
Nu houden we alleen de uitdrukking voor domeinextensie over, vergelijkbaar met het vierde scenario, we zullen enkele specifieke domeinextensies behandelen. Als u wilt, kunt u er meer toevoegen door ze in een ronde haak te plaatsen en ze te scheiden met een '|' symbool.
Door deze uitdrukking te consolideren met de vorige uitdrukking, krijgen we onze laatste uitdrukkingswaarde voor e-mailvalidatie.
Gevolgtrekking
In deze tutorial hebben we geleerd wat reguliere expressie is, samen met de syntaxis / symbolen die worden gebruikt om een reguliere expressie aan te duiden, te construeren. Met reguliere expressie kan de gebruiker een string met een bepaald patroon matchen.
Dit is erg handig in situaties die een snelle validatie van de invoer vereisen, zoals wanneer een gebruiker zijn e-mailadres of telefoonnummer invoert, regex kan worden gebruikt om het formaat snel te valideren en de gebruiker over het probleem te informeren als de gebruiker het verkeerde formaat heeft ingevoerd.
We hebben ook geleerd om verschillende scenario's aan te pakken die voor verschillende toepassingen kunnen worden gebruikt. We hebben het stapsgewijze proces bekeken om uitdrukkingen te schrijven voor overeenkomende woorden, alfabetten, websiteadressen, e-mail-ID's en zelfs bestandstypen en extensies.
Deze scenario's zijn erg handig bij real-time validatie van gebruikersinvoer zonder talloze regels code te schrijven en helpen daardoor tijd te besparen en complexiteit te verminderen. Deze voorbeelden zijn gebruikt om de gebruiker te begeleiden bij het maken van hun eigen set van reguliere expressies en zo te helpen bij het omgaan met verschillende andere verschillende scenario's.
Regex kan eenvoudig zijn, zoals het gebruik van alfabet of cijfers om te matchen met een bepaalde reeks tekens of complex door een combinatie van speciale tekens, kwantoren, tekenklassen, enz. Te gebruiken om complexe formaten te valideren of om te zoeken naar een specifiek patroon in de tekenreeks.
In een notendop: een reguliere expressie is een behoorlijk krachtig hulpmiddel voor een programmeur en helpt bij het verminderen van de hoeveelheid code die nodig is om gegevens te matchen of een validatietaak.
Bekijk hier ALLE C # Tutorials.
Aanbevolen literatuur
- C # String-zelfstudie - String-methoden met codevoorbeelden
- C # Random Number en C # Random String Generator met codevoorbeelden
- C ++ regex-zelfstudie: reguliere expressies in C ++ met voorbeelden
- MongoDB reguliere expressie $ regex met voorbeeld
- Java Regex-zelfstudie met voorbeelden van reguliere expressies
- Hoe Unix reguliere expressies te gebruiken
- Postprocessor gebruiken in JMeter (extractor voor reguliere expressies)
- Zelfstudie voor Java String | Java String-methoden met voorbeelden