Jeśli jesteś programistą, prawdopodobnie wiesz już, czym są wyrażenia regularne (regex). Wzorce Regex zostały zaimplementowane w prawie każdym głównym języku programowania, ale nadal większość programistów nie rozpoznaje mocy i wszechstronności tych wzorców.

Ten przewodnik dotyczy wyrażeń regularnych i tego, jak można ich używać w języku programowania Python.

Co to są wyrażenia regularne?

Wyrażenia regularne to wzorce, które pomagają użytkownikowi dopasować kombinacje znaków w plikach tekstowych i ciągach. Za pomocą wyrażeń regularnych można filtrować lub znajdować określony wzorzec w danych wyjściowych polecenia lub dokumentu.

Istnieją różne przypadki użycia wyrażeń regularnych, z których najbardziej znana polecenie grep w systemie Linux. Inne aplikacje obejmują filtrowanie informacji, takie jak wyodrębnianie adresów e-mail i numerów telefonów ze zrzutu danych.

Głównym powodem, dla którego wielu programistów odchodzi od wyrażeń regularnych, jest brak świadomości mocy dopasowywania wzorców. Niektórzy nawet uważają wyrażenia regularne za mylące z powodu dużej liczby znaków i sekwencji użytych we wzorcach.

Niezależnie od przyczyny, wyrażenia regularne są i będą jednym z najważniejszych aspektów programowania, o którym każdy powinien wiedzieć.

Wyrażenia regularne: dopasowywanie znaków i sekwencji

Regex to zupełnie nowy język sam w sobie. Silnik wyrażeń regularnych interpretuje wzorce złożone z kilku znaków o określonych znaczeniach. Podstawowe literały, takie jak znaki alfanumeryczne, pasują do siebie. Ale złożone znaki, takie jak $, *, +, {itd. pomoc w dopasowywaniu wyższego rzędu.

  1. Gwiazdka (*): Dopasowuje poprzedni znak zero lub więcej razy. Dosłowne znaczenie znaku to „Element pomnożony n razy”. Na przykład, jeśli wyrażeniem regularnym jest ABC*dopasowane ciągi to ab, abc, abcc, abccc, abcccc itp. Ekspresja [pne]* dopasuje bc, bcbc, bcbc itp.
  2. Plus (+): Dopasowuje poprzedni znak raz lub więcej razy. Działanie + charakter jest podobny do *, ale + znak pomija wzorzec, jeśli znak nie występuje. Na przykład, abc + dopasuje abc, abcc, abccc itp. ale nie ab.
  3. Znak zapytania (?): Dopasowuje poprzedzający znak zero lub jeden raz (y). Na przykład wzór ABC? dopasuje tylko ab i abc.
  4. Rura (|): Używany jako plik binarny LUB operator. Dopasowuje dowolny ze znaków poprzedzających i następujących po potoku. Na przykład, a | b będzie pasować do a lub b.
  5. Kropka (.): Pasuje do postaci, której tożsamość jest nieznana. Na przykład, a.c dopasuje aac, abc, acc, a2c i tak dalej.
  6. Marchew (^): Dopasowuje pierwszy znak we wzorcu. Na przykład, ^ Ra dopasuje słowa zaczynające się od Ra takie jak Rabbit, Raccoon i Random.
  7. Dolar ($): Dopasowuje ostatni znak we wzorcu. Na przykład, an $ dopasuje słowa kończące się na na takie jak Van, Dan i Plan.
  8. Łącznik (-): Służy do definiowania zakresu znaków. Na przykład, [0-9] dopasuje wszystkie jednocyfrowe znaki numeryczne.

Specjalne sekwencje używane we wzorach wyrażeń regularnych to:

  1. \ZA: Zwraca dopasowanie, jeśli kolejne znaki znajdują się na początku ciągu. Na przykład, \ AThe dopasuje słowa zaczynające się od Plik takie jak The, Them, They itp.
  2. \b: Zwraca dopasowanie, jeśli znak znajduje się na początku lub na końcu słowa. Na przykład, \ bmad i szalony \ b dopasuje takie słowa jak zrobiony i koczownik odpowiednio.
  3. \B: Zwraca dopasowanie, jeśli znak nie został znaleziony na początku lub na końcu słowa.
  4. \re: Dopasowuje znaki numeryczne obecne w ciągu. Na przykład, /d* dopasuje liczby takie jak 1, 12, 1232 itd.
  5. \RE: Dopasowuje nienumeryczne znaki w ciągu. /RE dopasuje a, b, c, f itd.
  6. \ s: Dopasowuje biały znak w tekście.
  7. \ S: Dopasowuje znak niebędący białymi znakami w tekście.
  8. \ w: Zwraca dopasowanie, jeśli ciąg zawiera znaki alfanumeryczne, w tym podkreślenia. Na przykład, \ w dopasuje a, b, c, d, 1, 2, 3 itd.
  9. \ W: Zwraca dopasowanie, jeśli ciąg nie zawiera znaków alfanumerycznych ani podkreśleń.
  10. \ Z: Dopasowuje znaki na końcu ciągu. Na przykład, koniec \ Z dopasuje słowa kończące się na koniec takie jak zginanie, naprawianie, tendencja itp.

Metody Pythona dla wyrażeń regularnych

W Pythonie re biblioteka zapewnia wszystkie niezbędne funkcje i narzędzia wymagane do zaimplementowania wyrażeń regularnych w programach. Nie musisz pobierać biblioteki za pomocą pip, ponieważ jest ona fabrycznie zainstalowana z interpretera Pythona.

Aby zaimportować plik re w Pythonie, dodaj następujący kod do swojego skryptu:

import re

Zwróć uwagę, że podczas przekazywania wyrażeń regularnych w Pythonie używamy nieprzetworzonych łańcuchów, ponieważ nie interpretują one znaków specjalnych, takich jak \ n i \ t różnie.

Mecz()

Plik rewanż() metoda w Pythonie zwraca obiekt wyrażenia regularnego, jeśli program znajdzie dopasowanie na początku określonego ciągu. Ta funkcja przyjmuje dwa podstawowe argumenty:

re.match (wzorzec, ciąg)

...gdzie wzór jest wyrażeniem regularnym i strunowy to tekst, który należy przeszukać.

Spójrz na poniższy fragment kodu.

import re
match = re.match (r'Word ', "To zdanie zawiera słowo")
drukuj (dopasuj)

Plik r znak przed napisem oznacza nieprzetworzony łańcuch.

Wynik:

Żaden

Powyższy kod powraca Żaden dlatego Słowo nie było obecne na początku ciągu.

Jeśli zostanie znalezione dopasowanie, możesz je wydrukować za pomocą rozszerzenia Grupa() metoda należąca do obiektu regex.

import re
match = re.match (r'Word ', "Słowo jest trudne do odczytania")
print (match.group (0))

Wynik:

Słowo

Szukaj()

Plik Badania() metoda przyjmuje podobne argumenty jak re.match (). Podczas gdy funkcja match () zwraca tylko dopasowania obecne na początku ciągu, Szukaj() zwróci dopasowania znalezione w dowolnym indeksie w ciągu.

import re
match = re.search (r'Word ', "To zdanie zawiera słowo. Słowo jest trudne do odczytania ”).
print (match.group (0))

Zwróć uwagę, że mecz() i Szukaj() metody zwrócą tylko jedno dopasowanie do wzorca. W powyższym kodzie, Słowo pojawia się dwukrotnie. Ale Szukaj() funkcja dopasuje tylko pierwsze wystąpienie słowa.

Słowo

Znajdź wszystko()

Jak już możesz się domyślić, plik Znajdź wszystko() metoda zwraca każde możliwe dopasowanie w ciągu.

import re
match = re.search (r'Word ', "To zdanie zawiera słowo. Słowo jest trudne do odczytania ”).
dla elem w meczu:
drukuj (elem)

Zamiast zwracać obiekt wyrażenia regularnego, funkcja findall () zwraca listę wszystkich dopasowań. Możesz iterować listę za pomocą pliku for loop w Pythonie.

Rozdzielać()

Jeśli chcesz podzielić ciąg na podciągi, używając wzorca jako separatora, to rozdzielać() funkcja jest tą, której potrzebujesz.

import re
split = re.split (r'and ', "To słowo i tamto i to są różne.")
drukuj (podziel)

Wynik:

[„To słowo”, „tamto”, „to jest inne”]

Pod()

Plik pod() metoda pozwala użytkownikowi zastąpić określone słowo w miejsce wzorca. Przyjmuje następujące argumenty.

re.sub (wzorzec, zamiana, ciąg)

Rozważ ten fragment kodu:

import re
wynik = re.sub (r'and ',' lub ', "Dave i Harry muszą zostać ukarani.")
print (wynik)

Wynik:

Dave lub Harry muszą zostać ukarani.

Skompilować()

Plik re.compile () metoda w re biblioteka umożliwia użytkownikowi przechowywanie w pamięci skompilowanej wersji wzorca wyrażenia regularnego. Następnie, używając skompilowanego obiektu, użytkownik może szybko przefiltrować określony zrzut tekstu pod kątem dopasowanych wzorców.

import re
pattern = re.compile ('Python')
match = pattern.findall ("Python to świetny język do pisania skryptów. Python jest łatwy do nauczenia ”).
drukuj (dopasuj)

Ta funkcja jest używana głównie do zapisywania wzorców, które wymagają dużej ilości zasobów i wymagają dużo czasu na uruchomienie. Wcześniejsze skompilowanie i zapisanie wzorca jako obiektu rozwiązuje ten problem.

Wykorzystaj moc Regex w Pythonie

Podczas pracy z plikami tekstowymi i danymi wyjściowymi regex jest doskonałym narzędziem do Twojej dyspozycji. Możesz szybko napisać kod do filtrowania lub zastępowania określonych wzorców w dokumencie.

Zapamiętywanie wszystkich znaków i pasujących sekwencji może być trudne, jeśli dopiero zaczynasz od wyrażenia regularnego. Aby poprawić wyrażenia regularne, odwoływanie się do listy znaków, metod i sekwencji od czasu do czasu z pewnością pomoże ci na dłuższą metę.

E-mail
Ściągawka w języku Python RegEx dla początkujących programistów

Skorzystaj z tej listy wyrażeń regularnych Pythona, aby móc lepiej używać tego wszechstronnego języka programowania.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • Programowanie
  • Pyton
O autorze
Deepesh Sharma (41 opublikowanych artykułów)

Deepesh jest młodszym edytorem Linuksa w MUO. Treści informacyjne pisze w internecie od ponad 3 lat. W wolnym czasie pisze, słucha muzyki i gra na gitarze.

Więcej od Deepesh Sharma

Zapisz się do naszego newslettera

Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.

.