Reguliere expressie: wat het betekent

Wat is een reguliere expressie?

Regex, of normale uitdrukkingen, zijn een patroonovereenkomstige opmaak die programmeurs gebruiken om naar bepaalde patronen in tekst te zoeken. Reguliere expressies kunnen naar bijna alles zoeken, afhankelijk van hoe je ze structureert; ze worden overal door programmeurs gebruikt omdat ze van onschatbare waarde zijn om computers te helpen bij het snel sorteren van gegevens en het filteren van onzin die anders fouten zou kunnen veroorzaken.

Reguliere expressies zien er vaak eng uit, vooral voor niet-programmeurs. Kijk hier eens naar:

[a-zA-Z0-9_.+-]+@[a-zA-Z0-9_-]+\.[a-zA-Z0-9_.-]+

Realistisch gezien is het eigenlijk niet zo erg; die overeenkomt met e-mailadressen. Zoals je zult zien, kunnen uitdrukkingen worden opgesplitst in individuele karakters, die allemaal het programma vertellen waarnaar het moet zoeken.

Reguliere expressies zijn bijna universeel. Dezelfde generaal syntaxis is van toepassing op alle talen met hier en daar slechts kleine variaties. Deze handleiding bevat voorbeelden van zowel Python als JavaScript, evenals gewone oude regex. Maakt u zich geen zorgen als u met een andere taal werkt. Bijna alles is ook van toepassing op de taal van uw keuze.

instagram viewer

Regex-basisprincipes

Technisch gezien zijn er niet veel dingen die niet als reguliere expressies kunnen worden beschouwd, omdat letterlijke tekstreeksen heel eenvoudig zijn. Als je 'abcde' als reguliere expressie zou gebruiken, zou de programmeertaal naar die exacte tekenreeks zoeken.

Het eerste meer dynamische overeenkomende karakter om naar te kijken is de '.' karakter. In deze context is het puntteken een jokerteken. Als je ermee zoekt, retourneert je programma elk teken dat het als een overeenkomst vindt.

Dus, wat als je naar een letterlijke stip wilt zoeken? Dat is ook niet moeilijk. Als je een letterlijke punt wilt gebruiken, voeg dan een backslash ervoor toe, zoals deze: '\.'

Backslash-tekens

De backslash speelt hier echter nog veel meer rollen. De meeste van de belangrijkste regex-tekens bevatten een backslash.

Cijfers voor reguliere expressies
Cijfers vinden met Regex in Python.

Bekijk een paar voorbeelden:

  • \d: Cijfers van 0 tot 9
  • \w: "Woordtekens" letters, cijfers en onderstrepingsteken
  • \s: Witruimtetekens, inclusief tabs, nieuwe regels en gewone spaties

Als u in plaats daarvan de hoofdletter gebruikt bij een van deze, krijgt u het omgekeerde. '\D' geeft u bijvoorbeeld alles behalve cijfers.

Klassen

De backslash-tekens zijn goed, maar ze zijn nog steeds een beetje stijf. Over het algemeen wilt u letters, cijfers of een paar speciale tekens matchen.

Reguliere expressie lessen
Regex-klassen gebruiken om letters in Python te vinden.

Plaats de tekens die u wilt matchen tussen vierkante haken '[]', en uw programma zal met elk van hen overeenkomen. Dit wordt een regex-klasse genoemd.

[abcd1234]

Bovenstaand voorbeeld is nog steeds inefficiënt. In plaats daarvan kunt u een streepje gebruiken om een ​​bereik op te geven; bijvoorbeeld alle kleine letters:

[a-z]

U kunt ook bereiken weergeven. De onderstaande uitdrukking komt overeen met alle letters en cijfers:

[a-zA-Z0-9]

Als je het streepje in je reeks tekens wilt opnemen, plak het dan aan het einde vast om te voorkomen dat het wordt geëvalueerd. Het werkt ook met andere speciale tekens.

[a-zA-Z0-9_.+-]

Net als bij de backslash-tekens, kun je hier ook het omgekeerde resultaat krijgen. Plaats een '^' aan het begin van je les om ze uit te sluiten van je resultaten. Hierdoor worden cijfers en verschillende speciale tekens van de resultaten uitgesloten:

[^0-9_+.-]

Groepen

Groepen gebruiken een reeks haakjes om uw uitdrukking uit elkaar te halen. Ze groeperen gegevens, zodat uw programma het kan targeten en gebruiken. Wanneer een programma de ' http://' vanaf een webadres gebruikt het regex-groepen om dat te bereiken. Met de regex kan het zich op bepaalde criteria richten, en de groepen laten het secties scheiden.

Reguliere expressiegroepen
Regex Groups Help bij het vinden van URL's in JavaScript.

Met groepen kunt u ook kiezen tussen het ene of het andere patroon. Ze gebruiken een enkele '|' om op te treden als "of" in de uitdrukking. De onderstaande uitdrukking komt overeen met een van deze: .com, .org, .net, .edu of .gov.

\.(com|org|net|edu|gov)

Kwantificatoren

Quantifiers zijn precies hoe ze klinken. Ze vertellen de uitdrukking de hoeveelheid van een personage dat je zoekt. Dit zijn de beschikbare kwantoren:

  • *: Nul of meer
  • +: Een of meer
  • ?: Nul of één
  • {3}: Het bedrag tussen haakjes

Plaats een van deze kwantoren aan het einde van het teken of de klasse waarvan u de hoeveelheid wilt specificeren. In dit voorbeeld wordt gezocht naar standaard zevencijferige telefoonnummers:

\d{3}[.*-]\d{3}[.*-]\d{4}

Ankers en grenzen

Met reguliere expressies kunt u naar patronen zoeken op basis van hun positie in een tekstreeks of rond een woord.

Ankers voor reguliere expressies
Regex-ankers gebruiken positionering om een ​​match te vinden in JavaScript.

Dit zijn uw primaire opties:

  • ^: Het begin van een string
  • $: Het einde van een string
  • \b: Woordgrens (het begin of einde van een woord)

Als je alleen strings wilt vinden die met een letter beginnen, kun je het volgende proberen:

^[a-zA-Z]

Stel dat u alleen het woord 'het' wilt vinden, niet woorden met de letters I en T; dat is waar je woordgrenzen zou gebruiken.

\b (i| Ik)t\b

Laatste gedachten

Reguliere expressies kunnen u een hoop kopzorgen besparen bij het programmeren. Stel je voor dat je probeert logica te schrijven om een ​​van de voorbeelden in dit artikel te bereiken. Het zou een vreselijke puinhoop zijn. Als je er eenmaal vertrouwd mee bent, zul je waarschijnlijk merken dat je echt geniet van de kracht en flexibiliteit van regex.

instagram story viewer