Vodič za početnike u regularnim izrazima s Pythonom

Vodič za početnike u regularnim izrazima s Pythonom

Ako ste programer, velike su šanse da već znate što su regularni izrazi (regex). Regex uzorci implementirani su u gotovo svaki mainstream programski jezik, ali ipak većina programera ne prepoznaje moć i svestranost ovih uzoraka.





Ovaj vodič govori o regularnim izrazima i o tome kako ih možete koristiti u programskom jeziku Python.





Što su regularni izrazi?

Regularni izrazi uzorci su koji pomažu korisniku da usporedi kombinacije znakova u tekstualnim datotekama i nizovima. Možete koristiti regularne izraze za filtriranje ili pronalaženje određenog uzorka u ispisu naredbe ili dokumenta.





Postoje različiti slučajevi uporabe regularnih izraza, od kojih je najpoznatiji naredba grep u Linuxu . Ostale aplikacije uključuju filtriranje informacija, poput izdvajanja adresa e -pošte i telefonskih brojeva iz smeta podataka.

Glavni razlog zašto se mnogi programeri udaljavaju od regularnih izraza je nedostatak svijesti o snazi ​​podudaranja uzoraka. Neki čak smatraju da su regularni izrazi zbunjujući zbog velike količine znakova i nizova koji se koriste u uzorcima.



Bez obzira na razlog, regularni izrazi jesu i bit će jedan od najvažnijih aspekata programiranja o kojima bi svi trebali znati.

puštanje glazbe s telefona na automobil

Regularni izrazi: podudaranje znakova i nizova

Regex je potpuno novi jezik sam po sebi. Regex motor tumači obrasce koji se sastoje od nekoliko znakova opremljenih specifičnim značenjima. Osnovni literali, poput alfanumeričkih znakova, sami se podudaraju. No složeni znakovi poput $, *, +, {itd. Pomažu u usklađivanju viših redova.





  1. Zvjezdica (*): Podudara se s prethodnim znakom nula ili više puta. Doslovno značenje znaka bilo bi 'Element pomnožen n puta'. Na primjer, ako je regularni izraz abc * , podudarni nizovi bit će ab, abc, abcc, abccc, abcccc itd. Izraz [prije Krista]* odgovarat će bc, bcbc, bcbc itd.
  2. Više (+): Podudara prethodni znak jedan ili više puta. Rad od + lik je sličan * , ali + znak izostavlja uzorak ako se znak ne pojavi. Na primjer, abc + odgovarat će abc, abcc, abccc itd., ali ne i ab.
  3. Upitnik (?): Odgovara prethodnom znaku nula ili jednom (s). Na primjer, uzorak abc? odgovarat će samo ab i abc.
  4. Cijev (|): Koristi se kao binarni ILI operater. Odgovara bilo kojem od znakova koji prethode i slijede cijev. Na primjer, a | b odgovarat će ili a ili b.
  5. Točka (.): Odgovara liku čiji identitet nije poznat. Na primjer, a.c odgovarat će aac, abc, acc, a2c itd.
  6. Mrkva (^): Odgovara prvom znaku u uzorku. Na primjer, ^Ra podudarat će se s riječima koje počinju sa Van kao što su Zec, Rakun i Random.
  7. Dolar ($): Odgovara posljednjem znaku u uzorku. Na primjer, $ će odgovarati riječima koje završavaju sa an kao što su Van, Dan i Plan.
  8. Crtica (-): Koristi se za definiranje raspona znakova. Na primjer, [0-9] odgovarat će svim jednoznamenkastim numeričkim znakovima.

Posebne sekvence koje se koriste u obrascima regularnog izraza su:

  1. DO: Vraća podudaranje ako su sljedeći znakovi prisutni na početku niza. Na primjer, ATOni podudarat će se s riječima koje počinju sa The kao što su oni, oni, oni itd.
  2. b: Vraća podudaranje ako se znak nalazi na početku ili na kraju riječi. Na primjer, bmad i lud b će odgovarati riječima kao što su napravljeno i nomad odnosno.
  3. B: Vraća podudaranje ako znak nije pronađen na početku ili na kraju riječi.
  4. d: Odgovara numeričkim znakovima koji su prisutni u nizu. Na primjer, /d* odgovarat će brojevima kao što su 1, 12, 1232 itd.
  5. D: Odgovara ne-brojčanim znakovima u nizu. /D odgovarat će a, b, c, f itd.
  6. s: Podudara se s razmakom u tekstu.
  7. S: Podudara se s znakom koji nije razmak u tekstu.
  8. u: Vraća podudaranje ako niz sadrži alfanumeričke znakove uključujući donje crte. Na primjer, u odgovarat će a, b, c, d, 1, 2, 3 itd.
  9. U: Vraća podudaranje ako niz ne sadrži alfanumeričke znakove ili donje crte.
  10. S: Podudara znakove na kraju niza. Na primjer, kraj Z će odgovarati riječima koje završavaju sa kraj poput savijanja, popravljanja, tegljenja itd.

Python metode za regularne izraze

U Pythonu je ponovno library pruža sve potrebne funkcije i pomoćne programe potrebne za implementaciju regularnog izraza u vaše programe. Ne morate preuzimati biblioteku pomoću pipa jer dolazi unaprijed instalirana s Python tumačem.





Za uvoz ponovno knjižnici u Pythonu, dodajte sljedeći kôd u svoju skriptu:

import re

Imajte na umu da prilikom prenošenja regularnih izraza u Pythonu koristimo neobrađene nizove jer oni ne tumače posebne znakove kao što su n i t različito.

Podudaranje ()

The re.match () metoda u Pythonu vraća regex objekt ako program pronađe podudaranje na početku navedenog niza. Ova funkcija ima dva osnovna argumenta:

re.match(pattern, string)

...gdje uzorak je regularni izraz i niz je tekst koji je potrebno pretražiti.

U nastavku pogledajte isječak koda.

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

The r znak prije niza označava neobrađeni niz.

Izlaz:

None

Gore navedeni kod se vraća Nijedan jer Riječ nije bio prisutan na početku niza.

Ako se pronađe podudaranje, možete ga ispisati pomoću skupina() metoda koja pripada regex objektu.

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

Izlaz:

Word

The re.search () metoda uzima slične argumente kao re.match (). Dok match () vraća samo podudaranja prisutna na početku niza, traži() vratit će podudaranja pronađena u bilo kojem indeksu u nizu.

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

Imajte na umu da podudaranje () i traži() metode će vratiti samo jedno podudaranje uzorka. U gore spomenutom kodu, Riječ pojavljuje se dva puta. Ali traži() funkcija će odgovarati samo prvom pojavljivanju riječi.

Word

FindAll ()

Kao što već možete pogoditi, findall () method vraća svako moguće podudaranje u nizu.

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

Umjesto vraćanja regularnog izraza, funkcija findall () vraća popis svih podudaranja. Popis možete ponavljati pomoću a for petlja u pythonu .

Podjela()

Ako želite podijeliti niz u podniz pomoću uzoraka kao graničnika, tada podjela() funkcija vam je potrebna.

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

Izlaz:

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

Pod()

The pod() metoda omogućuje korisniku da zamijeni određenu riječ na mjestu uzorka. Potrebni su sljedeći argumenti.

re.sub(pattern, replacement, string)

Razmotrite ovaj isječak koda:

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

Izlaz:

Dave or Harry must be punished.

Sastaviti()

The re.compile () metoda u ponovno library omogućuje korisniku da pohrani kompiliranu verziju uzorka regularnog izraza u memoriju. Zatim, pomoću prevedenog objekta, korisnik može brzo filtrirati navedeni ispis teksta za usklađene uzorke.

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

Ova se funkcija prvenstveno koristi za spremanje uzoraka koji zahtijevaju mnogo resursa i za njihovo izvođenje treba puno vremena. Sastavljanje i spremanje uzorka kao objekta unaprijed rješava ovaj problem.

Iskoristite moć regularnog izraza s Pythonom

Kada radite s tekstualnim datotekama i ispisom, regex je izvrstan alat koji imate na raspolaganju. Možete brzo napisati kôd za filtriranje ili zamjenu određenih uzoraka u dokumentu.

Zapamtiti sve znakove i odgovarajuće sekvence može biti teško ako tek počinjete s regularnim izrazom. Da biste postali bolji u regularnim izrazima, pozivanje na popis znakova, metoda i nizova tu i tamo zasigurno će vam dugoročno pomoći.

Udio Udio Cvrkut E -pošta Python RegEx Cheat Sheet za nadobudne programere

Upotrijebite ovaj popis regularnih izraza Python kako biste mogli bolje koristiti ovaj svestrani programski jezik.

Pročitajte Dalje
Povezane teme
  • Programiranje
  • Programiranje
  • Piton
O autoru Deepesh Sharma(79 objavljenih članaka)

Deepesh je mlađi urednik za Linux u MUO -u. On piše informativne vodiče o Linuxu s ciljem pružiti blaženo iskustvo svim pridošlicama. Nisam siguran u filmove, ali ako želite razgovarati o tehnologiji, on je vaš momak. U slobodno vrijeme možete ga pronaći kako čita knjige, sluša različite glazbene žanrove ili svira gitaru.

Više od Deepesh Sharma

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e -knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu