Najlepszy samouczek Python3 wyrażenia regularne W 2024 r. W tym samouczku możesz dowiedzieć się funkcja re.match,metoda re.search,Re.match różnica i re.search,Wyszukiwania i zamiany,Regex modyfikator - opcjonalnie flag,Wzorcu wyrażenia regularnego,Przykłady wyrażeń regularnych,
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.
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.w3write.com').span()) # 在起始位置匹配 print(re.match('com', 'www.w3write.com')) # 不在起始位置匹配
Uruchom wyjście Powyższy przykład to:
(0, 3) None
Przykład 2:
#!/usr/bin/python3 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
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/python3 import re print(re.search('www', 'www.w3write.com').span()) # 在起始位置匹配 print(re.search('com', 'www.w3write.com').span()) # 不在起始位置匹配
Uruchom wyjście Powyższy przykład to:
(0, 3) (11, 14)
Przykład 2:
#!/usr/bin/python3 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 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/python3 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
Moduł Pythona re zapewnia re.sub na mecz wymiana strun.
Składnia:
re.sub(pattern, repl, string, count=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/python3 import re phone = "2004-959-559 # 这是一个电话号码" # 删除注释 num = re.sub(r'#.*$', "", phone) print ("电话号码 : ", num) # 移除非数字的内容 num = re.sub(r'\D', "", phone) print ("电话号码 : ", num)Wyniki z powyższych przykładów są następujące:
电话号码 : 2004-959-559 电话号码 : 2004959559
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. |
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. |
[pl.] | Jest używany do reprezentowania grupy znaków, wymienione osobno: [AMK] match 'a', 'M' lub 'K' |
[^ pl.] | 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 (pl.), 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ę |
(? # pl.) | Uwaga. |
(? = Re) | Przekazania pewną ogranicznika. Jeśli zawarte wyrażenie regularne, reprezentowany tu pl., 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ów |
\ W | Dopasuj niealfanumeryczne |
\ 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 pl. \ 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 | opis |
---|---|
pyton | Matching "python". |
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 |
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_]". |