De beginnershandleiding voor reguliere expressies met Python

De beginnershandleiding voor reguliere expressies met Python

Als je een programmeur bent, is de kans groot dat je al weet wat reguliere expressies (regex) zijn. Regex-patronen zijn geïmplementeerd in bijna elke reguliere programmeertaal, maar toch worden de kracht en veelzijdigheid van deze patronen door de meeste ontwikkelaars niet herkend.





Deze gids gaat over reguliere expressies en hoe je ze kunt gebruiken in de programmeertaal Python.





Wat zijn reguliere expressies?

Reguliere expressies zijn patronen die een gebruiker helpen bij het matchen van tekencombinaties in tekstbestanden en tekenreeksen. U kunt reguliere expressies gebruiken om een ​​specifiek patroon te filteren of te vinden in de uitvoer van een opdracht of een document.





Er zijn verschillende use-cases van reguliere expressies, waarvan de meest bekende is het grep-commando in Linux . Andere toepassingen zijn het filteren van informatie, zoals het extraheren van e-mailadressen en telefoonnummers uit een datadump.

De belangrijkste reden waarom veel ontwikkelaars afdwalen van reguliere expressies, is het gebrek aan bewustzijn over de kracht van patroonherkenning. Sommigen vinden reguliere expressies zelfs verwarrend vanwege de grote hoeveelheid tekens en reeksen die in de patronen worden gebruikt.



Wat de reden ook mag zijn, reguliere expressies zijn en zullen een van de belangrijkste aspecten van programmeren zijn waarvan iedereen op de hoogte zou moeten zijn.

hoe ios 11 te jailbreaken met computer

Reguliere expressies: overeenkomende tekens en reeksen

Regex is een geheel nieuwe taal op zich. Een regex-engine interpreteert patronen die bestaan ​​uit verschillende karakters die zijn uitgerust met specifieke betekenissen. Basisletterwoorden zoals alfanumerieke tekens komen overeen met zichzelf. Maar complexe tekens zoals $, *, +, {, enz. helpen bij het matchen van een hogere orde.





  1. Sterretje (*): Komt nul of meer keer overeen met het voorgaande teken. De letterlijke betekenis van het karakter zou zijn 'Element n maal vermenigvuldigd'. Als de reguliere expressie bijvoorbeeld is abc * , zijn de overeenkomende tekenreeksen ab, abc, abcc, abccc, abcccc, enz. De uitdrukking [bc]* komt overeen met bc, bcbc, bcbc, enz.
  2. Meer (+): Komt een of meerdere keren overeen met het voorgaande teken. De werking van de + karakter lijkt op * , maar de + karakter laat het patroon weg als het karakter niet voorkomt. Bijvoorbeeld, abc + komt overeen met abc, abcc, abccc, etc. maar niet met ab.
  3. Vraagteken (?): Komt overeen met het voorgaande teken nul of één keer. Bijvoorbeeld het patroon abc? komt alleen overeen met ab en abc.
  4. Pijp (|): Gebruikt als een binair OF exploitant. Komt overeen met een van de tekens voorafgaand aan en volgend op de pijp. Bijvoorbeeld, a|b zal overeenkomen met a of b.
  5. Punt (.): Komt overeen met een personage waarvan de identiteit onbekend is. Bijvoorbeeld, a.c komt overeen met aac, abc, acc, a2c, enzovoort.
  6. Wortel (^): Komt overeen met het eerste teken in het patroon. Bijvoorbeeld, ^Ra komt overeen met woorden die beginnen met Uit zoals konijn, wasbeer en willekeurig.
  7. Dollar ($): Komt overeen met het laatste teken in het patroon. Bijvoorbeeld, een$ komt overeen met woorden die eindigen op een zoals Van, Dan en Plan.
  8. Koppelteken (-): Wordt gebruikt om een ​​reeks tekens te definiëren. Bijvoorbeeld, [0-9] komt overeen met alle eencijferige numerieke tekens.

Speciale sequenties die worden gebruikt in reguliere expressiepatronen zijn:

  1. TOT: Retourneert een overeenkomst als de volgende tekens aan het begin van de tekenreeks staan. Bijvoorbeeld, AThe komt overeen met woorden die beginnen met de De zoals De, Zij, Zij, enz.
  2. B: Retourneert een overeenkomst als het teken aan het begin of aan het einde van een woord wordt gevonden. Bijvoorbeeld, bmad en gek komt overeen met woorden als gemaakt en nomade respectievelijk.
  3. B: Retourneert een overeenkomst als het teken niet aan het begin of einde van een woord wordt gevonden.
  4. NS: Komt overeen met numerieke tekens die aanwezig zijn in de tekenreeks. Bijvoorbeeld, /NS* komt overeen met nummers zoals 1, 12, 1232, enz.
  5. NS: Komt overeen met niet-numerieke tekens in de tekenreeks. /NS zal overeenkomen met a, b, c, f, enz.
  6. s: Komt overeen met een witruimteteken in de tekst.
  7. S: Komt overeen met een niet-witruimteteken in de tekst.
  8. in: Retourneert een overeenkomst als de tekenreeks alfanumerieke tekens bevat, inclusief onderstrepingstekens. Bijvoorbeeld, in komt overeen met a, b, c, d, 1, 2, 3, enz.
  9. IN: Retourneert een overeenkomst als de tekenreeks geen alfanumerieke tekens of onderstrepingstekens bevat.
  10. MET: Komt overeen met tekens aan het einde van een tekenreeks. Bijvoorbeeld, einde komt overeen met woorden die eindigen op einde zoals buigen, herstellen, neigen, enz.

Python-methoden voor reguliere expressies

In Python, de met betrekking tot bibliotheek biedt alle noodzakelijke functies en hulpprogramma's die nodig zijn om regex in uw programma's te implementeren. U hoeft de bibliotheek niet te downloaden met pip omdat deze vooraf is geïnstalleerd met de Python-interpreter.





Om de . te importeren met betrekking tot bibliotheek in Python, voeg je de volgende code toe aan je script:

import re

Merk op dat bij het doorgeven van reguliere expressies in Python, we onbewerkte tekenreeksen gebruiken omdat ze geen speciale tekens interpreteren, zoals: N en anders.

Bij elkaar passen()

De re.match() methode in Python retourneert een regex-object als het programma een overeenkomst vindt aan het begin van de opgegeven tekenreeks. Deze functie heeft twee basisargumenten:

re.match(pattern, string)

...waar patroon is de reguliere expressie en snaar is de tekst die moet worden doorzocht.

Bekijk hieronder het codefragment.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

De R teken voor de tekenreeks staat voor onbewerkte tekenreeks.

Uitgang:

None

De bovengenoemde code keert terug Geen omdat Woord was niet aanwezig aan het begin van de string.

Als er een overeenkomst is gevonden, kunt u de overeenkomst afdrukken met de groep() methode die bij het regex-object hoort.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

Uitgang:

Word

De Onderzoek () methode heeft soortgelijke argumenten als re.match(). Terwijl match() alleen overeenkomsten retourneert die aanwezig zijn aan het begin van de tekenreeks, zoeken() retourneert overeenkomsten die zijn gevonden bij elke index in de tekenreeks.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

Merk op dat de bij elkaar passen() en zoeken() methoden zullen slechts één patroonovereenkomst retourneren. In de bovengenoemde code, Woord verschijnt twee keer. Maar de zoeken() functie komt alleen overeen met het eerste voorkomen van het woord.

Word

Vind alle()

Zoals je al kunt raden, de vind alle() methode retourneert elke mogelijke overeenkomst in de tekenreeks.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

In plaats van een regex-object te retourneren, retourneert de functie findall() een lijst met alle overeenkomsten. U kunt de lijst doorlopen met a voor lus in python .

Splitsen()

Als je een string in substrings wilt splitsen met een patroon als scheidingsteken, dan is de splitsen() functie is degene die je nodig hebt.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

Uitgang:

['This word', 'that', 'this are different.']

Sub()

De sub() methode stelt een gebruiker in staat om een ​​specifiek woord te vervangen in de plaats van een patroon. Het gaat om de volgende argumenten.

re.sub(pattern, replacement, string)

Overweeg dit codefragment:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

Uitgang:

Dave or Harry must be punished.

Compileren()

De opnieuw.compileren() methode in de met betrekking tot bibliotheek kan een gebruiker een gecompileerde versie van het reguliere expressiepatroon in het geheugen opslaan. Vervolgens kan de gebruiker met behulp van het gecompileerde object snel de opgegeven tekstdump filteren op overeenkomende patronen.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

Deze functie wordt voornamelijk gebruikt voor het opslaan van patronen die veel resources vergen en veel tijd nodig hebben om te worden uitgevoerd. Het vooraf compileren en opslaan van het patroon als object lost dit probleem op.

Benut de kracht van Regex met Python

Wanneer u met tekstbestanden en uitvoer werkt, is regex een geweldig hulpmiddel om tot uw beschikking te hebben. U kunt snel code schrijven om specifieke patronen in het document te filteren of te vervangen.

Het onthouden van alle karakters en bijpassende reeksen kan moeilijk zijn als je net begint met regex. Om beter te worden in reguliere expressies, zal het af en toe verwijzen naar een lijst met karakters, methoden en reeksen je op de lange termijn zeker helpen.

Deel Deel Tweeten E-mail De Python RegEx Cheatsheet voor beginnende programmeurs

Gebruik deze lijst met reguliere Python-expressies zodat u beter kunt worden in het gebruik van deze veelzijdige programmeertaal.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Programmeren
  • Python
Over de auteur Deepesh Sharma(79 artikelen gepubliceerd)

Deepesh is de Junior Editor voor Linux bij MUO. Hij schrijft informatieve handleidingen over Linux, met als doel een zalige ervaring te bieden aan alle nieuwkomers. Ik weet niet zeker van films, maar als je over technologie wilt praten, is hij jouw man. In zijn vrije tijd kun je hem boeken zien lezen, naar verschillende muziekgenres luisteren of zijn gitaar spelen.

Meer van Deepesh Sharma

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren