Przewodnik dla początkujących po wyrażeniach regularnych w Pythonie

Przewodnik dla początkujących po wyrażeniach regularnych w Pythonie

Jeśli jesteś programistą, prawdopodobnie już wiesz, czym są wyrażenia regularne (regex). Wzorce regex zostały zaimplementowane w prawie każdym głównym języku programowania, ale mimo to 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. Wyrażeń regularnych można używać do filtrowania lub znajdowania określonego wzorca w danych wyjściowych polecenia lub dokumentu.





Istnieją różne przypadki użycia wyrażeń regularnych, z których najbardziej znanym jest polecenie grep w Linuksie . 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 na temat mocy dopasowania wzorców. Niektórzy uważają nawet wyrażenia regularne za mylące z powodu dużej ilości znaków i sekwencji użytych we wzorcach.



Bez względu na przyczynę, wyrażenia regularne są i będą jednym z najważniejszych aspektów programowania, o którym każdy powinien wiedzieć.

odtwarzanie muzyki z telefonu do samochodu

Wyrażenia regularne: dopasowywanie znaków i sekwencji

Regex sam w sobie jest zupełnie nowym językiem. Silnik wyrażeń regularnych interpretuje wzorce składające się 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 $, *, +, { itp., pomagają w dopasowaniu wyższego rzędu.





  1. Gwiazdka (*): Dopasowuje poprzedzający znak zero lub więcej razy. Dosłowne znaczenie tego znaku to „Element pomnożony n razy”. Na przykład, jeśli wyrażenie regularne to abc * , dopasowane ciągi będą ab, abc, abcc, abccc, abcccc itd. Wyrażenie [pne]* dopasuje bc, bcbc, bcbc itp.
  2. Więcej (+): Dopasowuje poprzedzający 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. Na przykład wzór ABC? dopasuje tylko ab i abc.
  4. Rura (|): Używany jako binarny LUB operator. Dopasowuje jeden ze znaków poprzedzających i następujących po potoku. Na przykład, a|b dopasuje a lub b.
  5. Kropka (.): Dopasowuje postać, której tożsamość jest nieznana. Na przykład, a.c dopasuje aac, abc, acc, a2c i tak dalej.
  6. Marchewka (^): Dopasowuje pierwszy znak we wzorcu. Na przykład, ^Ra dopasuje słowa zaczynające się od Na zewnątrz takich jak Rabbit, Raccoon i Random.
  7. Dolar ($): Dopasowuje ostatni znak we wzorcu. Na przykład, i$ dopasuje słowa kończące się na jakiś takich 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 wzorcach wyrażeń regularnych to:

  1. DO: Zwraca dopasowanie, jeśli kolejne znaki znajdują się na początku ciągu. Na przykład, Athe dopasuje słowa zaczynające się od ten takich jak The, Oni, Oni itp.
  2. b: Zwraca dopasowanie, jeśli znak znajduje się na początku lub na końcu słowa. Na przykład, bmad oraz szalony dopasuje słowa takie jak zrobiony oraz koczownik odpowiednio.
  3. B: Zwraca dopasowanie, jeśli znak nie został znaleziony na początku lub na końcu słowa.
  4. D: Dopasowuje znaki numeryczne obecne w ciągu. Na przykład, /D* dopasuje liczby takie jak 1, 12, 1232 itd.
  5. D: Dopasowuje znaki nieliczbowe w ciągu. /D dopasuje a, b, c, f itd.
  6. s: Dopasowuje biały znak w tekście.
  7. S: Dopasowuje w tekście znak inny niż biały.
  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. : Dopasowuje znaki na końcu ciągu. Na przykład, koniec dopasuje słowa kończące się na kończyć się takie jak zginanie, naprawianie, tendencja itp.

Metody Pythona dla wyrażeń regularnych

W Pythonie odnośnie Biblioteka zapewnia wszystkie niezbędne funkcje i narzędzia wymagane do implementacji wyrażeń regularnych w twoich programach. Nie musisz pobierać biblioteki za pomocą pip, ponieważ jest ona preinstalowana z interpreterem Pythona.





Aby zaimportować odnośnie w Pythonie, dodaj następujący kod do swojego skryptu:

import re

Zauważ, że podczas przekazywania wyrażeń regularnych w Pythonie używamy surowych ciągów, ponieważ nie interpretują one znaków specjalnych, takich jak oraz T różnie.

Mecz()

ten rewanż() Metoda w Pythonie zwraca obiekt regex, jeśli program znajdzie dopasowanie na początku określonego ciągu. Ta funkcja przyjmuje dwa podstawowe argumenty:

re.match(pattern, string)

...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', 'This sentence contains a Word')
print(match)

ten r znak przed ciągiem oznacza surowy ciąg.

Wyjście:

None

Wspomniany kod powraca Nic ponieważ Słowo nie był obecny na początku ciągu.

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

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

Wyjście:

Word

ten Badania () Metoda przyjmuje podobne argumenty jak re.match(). Podczas gdy 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', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

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

Word

Znajdź wszystko()

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

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

Zamiast zwracać obiekt regex, funkcja findall() zwraca listę wszystkich dopasowań. Możesz iterować po liście za pomocą pętla for w Pythonie .

Podział()

Jeśli chcesz podzielić ciąg na podciągi, używając wzorca jako ogranicznika, wtedy podział() funkcja jest tym, czego potrzebujesz.

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

Wyjście:

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

Pod()

ten pod() Metoda pozwala użytkownikowi na podstawienie określonego słowa w miejsce wzorca. Wymaga następujących argumentów.

re.sub(pattern, replacement, string)

Rozważ ten fragment kodu:

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

Wyjście:

Dave or Harry must be punished.

Skompilować()

ten re.kompilacja() metoda w odnośnie Biblioteka umożliwia użytkownikowi przechowywanie skompilowanej wersji wzorca wyrażenia regularnego w pamięci. Następnie, korzystając ze skompilowanego obiektu, użytkownik może szybko przefiltrować określony zrzut tekstu pod kątem pasujących wzorców.

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

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

Wykorzystaj potęgę Regex w Pythonie

Kiedy pracujesz z plikami tekstowymi i wyjściowymi, regex jest świetnym narzędziem do Twojej dyspozycji. Możesz szybko napisać kod, aby filtrować lub zastępować określone wzorce w dokumencie.

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

Udział Udział Ćwierkać E-mail Ściągawka Python RegEx dla początkujących programistów

Skorzystaj z tej listy wyrażeń regularnych Pythona, aby lepiej posługiwać się tym wszechstronnym językiem programowania.

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

Deepesh to Junior Editor dla Linuksa w MUO. Pisze przewodniki informacyjne o Linuksie, których celem jest zapewnienie błogiego doświadczenia wszystkim nowicjuszom. Nie jestem pewien co do filmów, ale jeśli chcesz porozmawiać o technologii, to jest twój facet. W wolnym czasie można go spotkać czytającego książki, słuchającego różnych gatunków muzycznych lub grającego na gitarze.

Więcej od Deepesha Sharma

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować