Latest web development tutorials

Wyrażenia regularne Python

Wyrażenia regularne to specjalny ciąg znaków, może pomóc w prosty sposób sprawdzić, czy ciąg pasuje do wzorca.

Python ponownie wzrasta moduł od wersji 1.5, regularny wzór ekspresji, który zapewnia Perl-styl.

Re Moduł ten pozwala języku Python posiada wszystkie cechy wyrażeń regularnych.

Funkcja kompilacji wygenerować wyrażenie regularne obiekt z ciągu wzoru flagi oraz opcjonalnych parametrów. Obiekt ten posiada zestaw metod dopasowywania wyrażeń regularnych i substytucji.

Re moduł dostarcza również sposób spójny z tymi funkcjami, które wykorzystują funkcje ciąg wzór jako pierwszego argumentu.

Ta sekcja wprowadza wspólne Pythona funkcji przetwarzania wyrażenia regularnego.


funkcja re.match

re.match próbuje dopasować wzór z pozycji wyjściowej łańcucha, jeśli nie pasujące pozycja startowa jest udane, match () zwraca żadnej.

Składnia funkcji:

re.match(pattern, string, flags=0)

parametry funkcyjne:

parametry opis
wzorzec Pasuje do wyrażenia regularnego
sznur Ciąg dopasować.
Flagi Flag, regularne pasujące wyrażenie jest wykorzystywane do sterowania, takie jak: czy, multi-line rozróżniana zapałki, i tak dalej.

Skuteczne metody mecz re.match zwraca obiekt mecz, w przeciwnym razie brak.

Możemy użyć grupę (NUM) lub grupy () funkcji, aby uzyskać obiekty pasujące dopasować wyrażeń.

Dopasowane metody obiektu opis
grupę (num = 0) Cały ciąg pasujący wyraz, grupa () można wprowadzić więcej niż jeden numer grupy, w tym przypadku zwróci wartość odpowiadającą tych grup krotki.
grupy () Zwraca krotki wszystkich grup łańcucha, od 1 do liczby zawartych w grupie.

Przykład 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.match('com', 'www.w3big.com'))         # 不在起始位置匹配

Uruchom wyjście Powyższy przykład to:

(0, 3)
None

Przykład 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Wyniki z powyższych przykładów są następujące:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

metoda re.search

re.search skanować cały ciąg i zwraca pierwszy udany mecz.

Składnia funkcji:

re.search(pattern, string, flags=0)

parametry funkcyjne:

parametry opis
wzorzec Pasuje do wyrażenia regularnego
sznur Ciąg dopasować.
Flagi Flag, regularne pasujące wyrażenie jest wykorzystywane do sterowania, takie jak: czy, multi-line rozróżniana zapałki, i tak dalej.

Skuteczne metody mecz re.search zwraca obiekt mecz, w przeciwnym razie brak.

Możemy użyć grupę (NUM) lub grupy () funkcji, aby uzyskać obiekty pasujące dopasować wyrażeń.

Dopasowane metody obiektu opis
grupę (num = 0) Cały ciąg pasujący wyraz, grupa () można wprowadzić więcej niż jeden numer grupy, w tym przypadku zwróci wartość odpowiadającą tych grup krotki.
grupy () Zwraca krotki wszystkich grup łańcucha, od 1 do liczby zawartych w grupie.

Przykład 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.search('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.search('com', 'www.w3big.com').span())         # 不在起始位置匹配

Uruchom wyjście Powyższy przykład to:

(0, 3)
(11, 14)

Przykład 2:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"
Wyniki z powyższych przykładów są następujące:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Re.match różnica i re.search

re.match pasuje tylko początek napisu, jeżeli początek napisu nie spełnia wyrażenie regularne, nie mecz, to funkcja zwróci None, a re.search dopasować cały ciąg, aż znajdzie dopasowanie.

Przykład:

#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print "search --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"
Przykłady powyższe wyniki przedstawiają się następująco:
No match!!
search --> matchObj.group() :  dogs

Wyszukiwania i zamiany

Moduł Pythona re zapewnia re.sub na mecz wymiana strun.

Składnia:

re.sub(pattern, repl, string, max=0)

Zwracany ciąg jest ciągiem w skrajnej lewej meczów RE nie będzie powtarzany do wymiany. Jeżeli wzorzec nie zostanie znaleziony, znaki zostaną zwrócone bez zmian.

Opcjonalnie count parametrem jest maksymalna ilość razy zamiennik pasujący wzorzec; licznik musi być nieujemną liczbą całkowitą. Domyślną wartością jest 0 oznacza zastąpienie wszystkich wystąpień.

Przykład:

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num
Wyniki z powyższych przykładów są następujące:
Phone Num :  2004-959-559
Phone Num :  2004959559

Regex modyfikator - opcjonalnie flag

Wyrażenia regularne mogą zawierać opcjonalne flagi modyfikatorów do kontrolowania trybu dopasowania. Modyfikacja jest określony jako opcjonalne flagi. (|) Aby określić wiele flag, które mogą być bitowym OR wskroś. Jak re.I | re.M jest ustawiony na flagi I i M:

modyfikatory opis
re.I Tak, że dopasowanie nie jest uwzględniana wielkość liter
re.L Czy identyfikację lokalizacji (locale-aware) dopasowanie
re.M dopasowanie multi-line, wpływając ^ i $
re.S So., w tym nowe linie pasują wszystkie znaki
re.U Według rozwiązania zestawu znaków Unicode znaki. Flaga ta wpływa \ w \ w \ b \ B.
re.X Ta flaga dając Ci bardziej elastyczny format tak, że będziesz pisać wyrażenia regularne łatwiejsze do zrozumienia.

Wzorcu wyrażenia regularnego

Ciąg wzór za pomocą specjalnej składni do określenia wyrażenia regularnego:

Litery i cyfry same. Wzorcu wyrażenia regularnego liter i cyfr pasuje ten sam ciąg.

Większość z liter i cyfr, będzie mieć inne znaczenie, gdy poprzedzone odwrotnym ukośnikiem.

Interpunkcja jest uciekł tylko wtedy, gdy sam mecz, czy stanowią one szczególne znaczenie.

Sam odwrotny ukośnik musi użyć ucieczki ukośnika.

Ponieważ wyrażenia regularne zazwyczaj zawierają backslashy, więc lepiej używać oryginalnego ciąg do ich reprezentowania. Elementy schematu (takie jak R '/ t ", odpowiednik" // t') pasuje do odpowiednich znaków specjalnych.

Poniższa tabela zawiera konkretne elementy składniowe regularne wzór ekspresji. Jeśli wzory użytkowe, zapewniając jednocześnie flagi opcjonalnego argumentu, znaczenie niektórych elementów wzoru zmieni.

tryb opis
^ Dopasowuje początek napisu
$ Dopasowuje koniec łańcucha.
, Dopasowuje dowolny znak oprócz znaku nowej linii, jeśli re.DOTALL flaga jest określona, ​​można dopasować do dowolnego znaku w tym nowej linii.
[...] Jest używany do reprezentowania grupy znaków, wymienione osobno: [AMK] match 'a', 'M' lub 'K'
[^ ...] Nie [] znaków: [^ abc] dopasowuje oprócz znaków a, b, c.
Re * 0 lub więcej dopasowania ekspresji.
re + Jednego lub więcej wyrazów dopasowania.
re? Mecz 0 lub 1 wg powyższych wyrażeń regularnych, aby zdefiniować segmenty, nie chciwi sposobem
Re {n}
re {n} Dokładne dopasowanie n poprzedzającego wyrażenia.
Re {n, m} n Mecz czasów M od powyższych wyrażeń regularnych do określenia segmentów, chciwi sposobem
a | b Meczu lub b
(Re) G mecz wyraz w nawiasie, a także reprezentuje grupę
(IMX?) Wyrażenie regularne składa się z trzech opcjonalnych flagi: I, m lub x. Wpływa tylko obszar w nawiasach.
(? -imx) Wyrażenia regularne zżyci, m lub x opcjonalne flagi. Wpływa tylko obszar w nawiasach.
(: Re?) Podobne (...), ale nie oznacza grupę
(IMX :? Re) Używam w nawiasach, M lub opcjonalnie x flagą
(-imx :? Re) Nie używaj i, m w nawiasie lub x opcjonalną flagę
(? # ...) Uwaga.
(? = Re) Przekazania pewną ogranicznika. Jeśli zawarte wyrażenie regularne, reprezentowany tu ..., z powodzeniem pasuje na bieżącej lokalizacji, a nie inaczej. Jednak, gdy zawierał wyraz został wypróbowany silnik dopasowywania nie powoduje przesunięcia; pozostała część wzoru jest nawet spróbować ogranicznik rację.
(?! Re) Napastnik ogranicznik negacją. I ogranicznik pewnością sprzeczne; sukces, gdy zawierał wyraz nie pasuje do aktualnej pozycji w łańcuchu
(?> Re) Niezależny pasujące do wzorca, eliminując Backtracking.
\ W alfanumeryczny Mecz i podkreślenia
\ W Dopasuj niealfanumeryczne i podkreślenia
\ S Dopasowuje dowolny biały znak, co odpowiada [\ t \ n \ r \ f].
\ S Dopasowuje dowolny zakaz pusty znak
\ D Dopasowuje dowolny numer, który jest odpowiednikiem [0-9].
\ D Pasuje do dowolnego nienumeryczny
\ a Dopasowuje początek napisu
\ Z Koniec ciąg mecz, jeśli istnieje przełamane, tuż przed końcem łańcucha dopasować znak nowej linii. c
\ Z Koniec ciąg meczów
\ G zakończono ostatnią pozycję z meczu.
\ B Mecze granica wyrazu, to znaczy, że odnosi się do miejsca i przestrzeni między słowami. Na przykład "er \ b 'może dopasować" nigdy "w" ER ", ale nie może się równać z" czasownika "w" er ".
\ B Dopasować granicę bez słów. "Er \ B 'może się równać z" czasownik "w" ER ", ale nie może się równać" nigdy "w" er ".
\ N \ t, i tym podobne. Dopasowuje znak nowej linii. Dopasowuje znak tabulacji. czekać
\ 1 ... \ 9 Dopasowane wyrażenie sub-n-tego pakietu.
\ 10 Dopasuj pierwszy pakietów n podwyrażeń jeśli jest po meczu. Inaczej, określenie odnosi się do liczbowej kodowej.

Przykłady wyrażeń regularnych

Charakter mecze

Przykłady opis
pyton Matching "python".

Klasy znaków

Przykłady opis
[PP] ython Matching "Python" lub "python"
rub [wy] Mecz "ruby" lub "Rube"
[AEIOU] Każda z liter w nawiasach dopasowanie
[0-9] Dopasowuje dowolny cyfrę. Podobnie jak w [0123456789]
[AZ] Mecze jakieś małe litery
[AZ] Dopasowuje dowolny wielkimi literami
[A-zA-Z0-9] Dopasowuje litery i cyfry
[^ Aeiou] Ponadto do wszystkich postaci inne niż litery aeiou
[^ 0-9] Dopasowane charakter wyjątkiem figur

Specjalne klasy postaci

Przykłady opis
, Dopasowuje dowolny pojedynczy znak z wyjątkiem "\ n" jest. Aby sprostać tym '\ n', w tym wszelkie znaki, takie jak wykorzystanie "[. \ N]" tryb.
\ D Wyszukuje cyfrę. Odpowiednik [0-9].
\ D Dopasować znaki nienumeryczne. Jest to równoznaczne z [^ 0-9].
\ S Mecze wszystkie spacje znaków, w tym spacje, tabulatory, podziały stron, i tak dalej. Jest odpowiednikiem [\ f \ n \ r \ t \ v].
\ S Dopasowuje nie-białych znaków znaków. Jest odpowiednikiem [^ \ f \ n \ r \ t \ v].
\ W Dopasuj dowolny znak słowny tym podkreślenia. Jest to równoznaczne z "[A-Za-z0-9_]".
\ W Dopasowuje dowolny znak inny niż słowo. Jest to odpowiednik "[^ A-Za-z0-9_]".