RegEx w Pythonie

RegEx, inaczej wyrażenia regularne, to sekwencja znaków tworząca wzorzec wyszukiwania.

RegEx można używać do sprawdzania, czy ciąg znaków zawiera określony wzorzec wyszukiwania.

RegEx

Python oferuje moduł o nazwie re wbudowanego pakietu, który można używać do przetwarzania wyrażeń regularnych.

Importuj re Moduł:

import re

RegEx w Pythonie

Importuj re Po zaimportowaniu modułu, można zacząć używać wyrażeń regularnych:

Przykład

Przeszukaj ciąg, aby zobaczyć, czy zaczyna się od "China" i kończy na "country":

import re
txt = "China is a great country"
x = re.search("^China.*country$", txt)

Uruchomienie przykładu

Funkcje RegEx

re Moduł dostarcza zestaw funkcji, które pozwalają na przeszukiwanie ciągów w celu dopasowania:

Funkcja Opis
findall Zwraca listę wszystkich dopasowań
search Zwraca obiekt Match, jeśli w dowolnym miejscu ciągu istnieje dopasowanie
split Zwraca listę ciągów rozdzielonych dopasowaniami
sub Zastąpienie jednego lub kilku dopasowań ciągiem

Metaznaki

Metaznaki to znaki o specjalnym znaczeniu:

Znak Opis Przykład TIY
[] Grupa znaków "[a-m]" Spróbuj
\ Przykładowe sekwencje specjalne (może być również używane do unikania specjalnych znaków) "\d" Spróbuj
. Jakikolwiek znak (z wyjątkiem znaku nowej linii) "he..o" Spróbuj
^ Zacząty "^hello" Spróbuj
$ Zakończony "world$" Spróbuj
* Zero lub więcej wystąpień "aix*" Spróbuj
+ Jedno lub więcej wystąpień "aix+" Spróbuj
{} Dokładnie określona liczba wystąpień "al{2}" Spróbuj
| którykolwiek z nich "spadło|zostało" Spróbuj
()) Złapanie i grupowanie

Specjalne sekwencje

Specjalne sekwencje to \ po którym następuje któryś z poniższych znaków, ma specjalne znaczenie:

Znak Opis Przykład TIY
\A Zwraca dopasowanie, jeśli określony znak znajduje się na początku ciągu "\AThe" Spróbuj
\b Zwraca dopasowanie, gdzie określony znak znajduje się na początku lub końcu słowa r"\bdeszcz"
r"deszcz\b"
Spróbuj
Spróbuj
\B Zwraca dopasowanie, gdzie określony znak istnieje, ale nie jest na początku (lub końcu) słowa r"\Bdeszcz"
r"deszcz\B"
Spróbuj
Spróbuj
\d Zwraca dopasowanie, gdzie ciąg zawiera cyfry (0-9) "\d" Spróbuj
\D Zwraca dopasowanie, gdzie ciąg nie zawiera cyfr "\D" Spróbuj
\s Zwraca dopasowanie, gdzie ciąg zawiera znaki białe "\s" Spróbuj
\S Zwraca dopasowanie, gdzie ciąg nie zawiera znaków białych "\S" Spróbuj
\w Zwraca dopasowanie, gdzie ciąg zawiera jakieś znaki słowne
Znaków od a do Z, cyfr od 0 do 9 oraz znak podkreślenia _
"\w" Spróbuj
\W Zwraca dopasowanie, gdzie ciąg nie zawiera żadnych znaków słownych "\W" Spróbuj
\Z Zwraca dopasowanie, jeśli określony znak znajduje się na końcu ciągu "Hiszpania\Z" Spróbuj

Zbiór(Set)

Zbiór (Set) to para nawiasów kwadratowych [] w grupie znaków, które mają specjalne znaczenie:

Zbiór Opis Spróbuj
[arn] Zwraca dopasowanie, które zawiera jeden z podanych znaków (a, r lub n) Spróbuj
[a-n] Zwraca dopasowania wszystkich małych liter między a i n Spróbuj
[^arn] Zwraca dopasowania zawierające dowolny znak oprócz a, r i n Spróbuj
[0123] Zwraca dopasowania zawierające dowolny z podanych cyfr (0, 1, 2 lub 3) Spróbuj
[0-9] Zwraca dopasowania wszystkich cyfr między 0 a 9 Spróbuj
[0-5][0-9] Zwraca dopasowania wszystkich cyfr między 0 a 9 Spróbuj
[a-zA-Z] Zwraca dopasowania wszystkich znaków między a i z, małych lub dużych liter Spróbuj
[+] W zbiorze, +, *, ., |, (), $, {} nie mają specjalnego znaczenia, więc [+] oznacza: zwraca dopasowania wszystkich + znaków w ciągu znaków Spróbuj

Funkcja findall()

findall() Funkcja zwraca listę zawierającą wszystkie dopasowania.

Przykład

Wydrukuj listę wszystkich dopasowań:

import re
str = "China is a great country"
x = re.findall("a", str)
print(x)

Uruchomienie przykładu

Ta lista zawiera dopasowania w kolejności, w której są znalezione.

Jeśli nie znaleziono dopasowania, zwraca pustą listę:

Przykład

Jeśli nie znaleziono dopasowania, zwraca pustą listę:

import re
str = "China is a great country"
x = re.findall("USA", str)
print(x)

Uruchomienie przykładu

Funkcja search()

search() Funkcja szuka dopasowań w ciągu znaków, zwracając obiekt Match, jeśli istnieje dopasowanie.

Jeśli istnieje kilka dopasowań, zwraca tylko pierwsze dopasowanie:

Przykład

Szukaj pierwszego znaku białej przestrzeni w ciągu znaków:

import re
str = "China is a great country"
x = re.search("\s", str)
print("The first white-space character is located in position:", x.start())

Uruchomienie przykładu

Jeśli nie znaleziono dopasowania, zwrócona wartość Brak:

Przykład

Przeprowadź wyszukiwanie bez zwracania dopasowania:

import re
str = "China is a great country"
x = re.search("USA", str)
print(x)

Uruchomienie przykładu

Funkcja split()

split() Funkcja zwraca listę, w której ciąg znaków jest rozbijany przy każdym dopasowaniu:

Przykład

Rozdziel ciąg znaków przy każdym znaku białej przestrzeni:

import re
str = "China is a great country"
x = re.split("\s", str)
print(x)

Uruchomienie przykładu

Możesz określić: maxsplit Parametr do kontrolowania liczby wystąpień:

Przykład

Rozdziel ciąg znaków tylko przy pierwszym wystąpieniu:

import re
str = "China is a great country"
x = re.split("\s", str, 1)
print(x)

Uruchomienie przykładu

Funkcja sub()

sub() Funkcja zamienia dopasowanie na wybrany tekst:

Przykład

Zastąp każdy znak białej przestrzeni cyfrą 9:

import re
str = "China is a great country"
x = re.sub("\s", "9", str)
print(x)

Uruchomienie przykładu

Możesz określić: count Parametr do kontrolowania liczby zastępów:

Przykład

Zastąp pierwsze dwa wystąpienia:

import re
str = "China is a great country"
x = re.sub("\s", "9", str, 2)
print(x)

Uruchomienie przykładu

Obiekt Match

Obiekt Match jest obiektem zawierającym informacje o wyszukiwaniu i wynikach.

Komentarz:Zwrócona wartość, jeśli nie ma dopasowań Brakzamiast obiektu Match.

Przykład

Wykonanie zwróci obiekt Match wyszukiwania:

import re
str = "China is a great country"
x = re.search("a", str)
print(x) # Wydrukuje obiekt

Uruchomienie przykładu

Obiekt Match oferuje atrybuty i metody do uzyskania informacji o wyszukiwaniu i wynikach:

  • span() Zwrócony krotka zawiera pozycje początkową i końcową dopasowania
  • .string Zwróć ciąg przekazany do funkcji
  • group() Zwróć dopasowaną część ciągu

Przykład

Wydrukuj pozycję pierwszego dopasowania (poczatek i koniec)

Wyszukiwanie wyrażeń regularnych zaczynających się od dużej litery "C"

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.span())

Uruchomienie przykładu

Przykład

Wydrukuj ciąg przekazany do funkcji:

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.string)

Uruchomienie przykładu

Przykład

Wydrukuj dopasowaną część ciągu.

Wyszukiwanie wyrażeń regularnych zaczynających się od dużej litery "C"

import re
str = "China is a great country"
x = re.search(r"\bC\w+", str)
print(x.group())

Uruchomienie przykładu

Komentarz:Zwrócona wartość, jeśli nie ma dopasowań Brakzamiast obiektu Match.