logo

Wyrażenie regularne (RegEx) w Pythonie z przykładami

A Wyrażenie regularne lub RegEx to specjalna sekwencja znaków, która wykorzystuje wzorzec wyszukiwania do znalezienia ciągu lub zestawu ciągów.

Może wykryć obecność lub brak tekstu, dopasowując go do określonego wzorca, a także może podzielić wzorzec na jeden lub więcej wzorców podrzędnych.

Moduł Regex w Pythonie

Python ma wbudowany moduł o nazwie Odnośnie który jest używany w wyrażeniach regularnych w Pythonie. Możemy zaimportować ten moduł za pomocą instrukcji import .



Przykład: Importowanie modułu re w Pythonie

Python3




# importing re module> import> re>

>

>

Jak korzystać z RegEx w Pythonie?

Możesz użyć RegEx w Pythonie po zaimportowaniu modułu re.

Przykład:

Ten kod Pythona używa wyrażeń regularnych do wyszukiwania słowa portal w danym ciągu, a następnie wypisuje indeksy początkowe i końcowe dopasowanego słowa w ciągu.

Python3




import> re> > s>=> 'techcodeview.com: A computer science portal for geeks'> > match>=> re.search(r>'portal'>, s)> > print>(>'Start Index:'>, match.start())> print>(>'End Index:'>, match.end())>

>

>

Wyjście

Start Index: 34 End Index: 40>

Notatka: Tutaj znak r (r’portal’) oznacza surowe, a nie wyrażenie regularne. Surowy ciąg znaków różni się nieco od zwykłego ciągu znaków i nie będzie interpretował znaku jako znaku ucieczki. Dzieje się tak, ponieważ aparat wyrażeń regularnych używa znaku do własnych celów ucieczki.

Zanim zaczniemy od modułu wyrażeń regularnych w Pythonie, zobaczmy, jak właściwie napisać wyrażenie regularne przy użyciu metaznaków lub sekwencji specjalnych.

Metaznaki

Metaznaki to znaki o specjalnym znaczeniu.

Aby zrozumieć analogię RE, metaznaki są przydatne i ważne. Zostaną one wykorzystane w funkcjach modułu re. Poniżej znajduje się lista metaznaków.

MetaCharaktery

Opis

Używane do pomijania specjalnego znaczenia następującego po nim znaku

rozmiar wektora C++

[]

Reprezentuje klasę postaci

^

Pasuje do początku

$

Pasuje do końca

.

Dopasowuje dowolny znak z wyjątkiem nowej linii

|

Oznacza LUB (pasuje do dowolnego znaku oddzielonego nim.

?

Dopasowuje zero lub jedno wystąpienie

*

Dowolna liczba wystąpień (w tym 0 wystąpień)

+

Jedno lub więcej wystąpień

{}

Wskaż liczbę wystąpień poprzedzającego wyrażenia regularnego do dopasowania.

()

Dołącz grupę Regex

Omówmy szczegółowo każdy z tych metaznaków:

1. – Ukośnik odwrotny

Ukośnik odwrotny () gwarantuje, że znak nie będzie traktowany w specjalny sposób. Można to uznać za sposób na uniknięcie metaznaków.

Na przykład, jeśli chcesz wyszukać kropkę (.) w ciągu, przekonasz się, że kropka (.) będzie traktowana jako znak specjalny, podobnie jak jeden z metaznaków (jak pokazano w powyższej tabeli). Zatem w tym przypadku użyjemy ukośnika odwrotnego () tuż przed kropką (.), aby straciła ona swoją specjalność. Aby lepiej zrozumieć, zobacz poniższy przykład.

Przykład:

Pierwsze wyszukiwanie ( re.search(r'.', s)> ) dopasowuje dowolny znak, a nie tylko kropkę, podczas drugiego wyszukiwania ( re.search(r'.', s)> ) specjalnie wyszukuje i dopasowuje znak kropki.

Python3




import> re> > s>=> 'geeks.forgeeks'> > # without using> match>=> re.search(r>'.'>, s)> print>(match)> > # using> match>=> re.search(r>'.'>, s)> print>(match)>

>

>

Wyjście

>

2. [] – Nawiasy kwadratowe

Nawiasy kwadratowe ([]) reprezentują klasę znaków składającą się z zestawu znaków, które chcemy dopasować. Na przykład klasa znaku [abc] będzie pasować do dowolnego pojedynczego znaku a, b lub c.

Zakres znaków możemy określić także za pomocą – wewnątrz nawiasów kwadratowych. Na przykład,

  • [0, 3] to próbka jako [0123]
  • [a-c] jest takie samo jak [abc]

Możemy również odwrócić klasę znaku za pomocą symbolu daszka (^). Na przykład,

  • [^0-3] oznacza dowolną liczbę z wyjątkiem 0, 1, 2 i 3
  • [^a-c] oznacza dowolny znak z wyjątkiem a, b lub c

Przykład:

W tym kodzie używasz wyrażeń regularnych, aby znaleźć wszystkie znaki w ciągu znaków mieszczące się w zakresie od „a” do „m”. The re.findall()> funkcja zwraca listę wszystkich takich znaków. W podanym ciągu znaki pasujące do tego wzorca to: 'c', 'k', 'b', 'f', 'j', 'e', ​​'h', 'l', 'd', ' G'.

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog'> pattern>=> '[a-m]'> result>=> re.findall(pattern, string)> > print>(result)>

>

>

Wyjście

['h', 'e', 'i', 'c', 'k', 'b', 'f', 'j', 'm', 'e', 'h', 'e', 'l', 'a', 'd', 'g']>

3. ^ – Karet

Symbol karetki (^) dopasowuje początek ciągu, czyli sprawdza, czy ciąg zaczyna się od podanych znaków, czy nie. Na przykład -

  • ^g sprawdzi, czy ciąg zaczyna się od g, np. maniacy, globus, dziewczyna, g itp.
  • ^ge sprawdzi, czy ciąg zaczyna się od ge, np. geeks, geeksforgeeks itp.

Przykład:

Ten kod używa wyrażeń regularnych do sprawdzania, czy lista ciągów zaczyna się od The . Jeśli ciąg zaczyna się od Jest oznaczony jako Dopasowany w przeciwnym razie jest oznaczony jako Nie pasuje.

Python3




import> re> regex>=> r>'^The'> strings>=> [>'The quick brown fox'>,>'The lazy dog'>,>'A quick brown fox'>]> for> string>in> strings:> >if> re.match(regex, string):> >print>(f>'Matched: {string}'>)> >else>:> >print>(f>'Not matched: {string}'>)>

>

>

Wyjście

Matched: The quick brown fox Matched: The lazy dog Not matched: A quick brown fox>

4. $ – dolar

Symbol dolara($) dopasowuje koniec łańcucha, tzn. sprawdza, czy ciąg kończy się podanymi znakami, czy nie. Na przykład-

  • s$ sprawdzi ciąg kończący się na przykład maniacy, końce, s itp.
  • ks$ sprawdzi ciąg kończący się na ks, np. geeks, geeksforgeeks, ks itp.

Przykład:

W tym kodzie zastosowano wyrażenie regularne, aby sprawdzić, czy ciąg znaków kończy się na Świat!. Jeśli zostanie znalezione dopasowanie, zostanie wydrukowane Znaleziono dopasowanie! w przeciwnym razie drukuje Nie znaleziono dopasowania .

Python3




import> re> > string>=> 'Hello World!'> pattern>=> r>'World!$'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Wyjście

Match found!>

5. . – Kropka

Symbol kropki(.) pasuje tylko do jednego znaku z wyjątkiem znaku nowej linii ( ). Na przykład -

  • a.b sprawdzi ciąg zawierający dowolny znak w miejscu kropki, taki jak acb, acbd, abbb itp.
  • .. sprawdzi, czy ciąg zawiera co najmniej 2 znaki

Przykład:

W tym kodzie do wyszukiwania wzorca używane jest wyrażenie regularne brązowy.lis w obrębie ciągu. Kropka (.>) we wzorcu reprezentuje dowolny znak. Jeśli zostanie znalezione dopasowanie, zostanie wydrukowane Znaleziono dopasowanie! w przeciwnym razie drukuje Nie znaleziono dopasowania .

Python3




import> re> > string>=> 'The quick brown fox jumps over the lazy dog.'> pattern>=> r>'brown.fox'> > match>=> re.search(pattern, string)> if> match:> >print>(>'Match found!'>)> else>:> >print>(>'Match not found.'>)>

>

>

Wyjście

Match found!>

6. | - Lub

Lub symbol działa jako operator or, co oznacza, że ​​sprawdza, czy wzorzec przed lub po symbolu or jest obecny w ciągu znaków, czy nie. Na przykład -

  • a|b dopasuje dowolny ciąg zawierający a lub b, taki jak acd, bcd, abcd itp.

7.? - Znak zapytania

Znak zapytania (?) to kwantyfikator w wyrażeniach regularnych, który wskazuje, że poprzedzający element powinien zostać dopasowany zero lub jeden raz. Pozwala określić, że element jest opcjonalny, co oznacza, że ​​może wystąpić raz lub wcale. Na przykład,

  • ab?c zostanie dopasowane do ciągu ac, acb, dabc, ale nie zostanie dopasowane do abbc, ponieważ istnieją dwa b. Podobnie nie zostanie dopasowany do abdc, ponieważ po b nie następuje c.

8.* – Gwiazda

Symbol gwiazdki (*) odpowiada zero lub więcej wystąpień wyrażenia regularnego poprzedzającego symbol *. Na przykład -

  • ab*c zostanie dopasowane dla ciągu ac, abc, abbbc, dabc itd., ale nie zostanie dopasowane dla abdc, ponieważ po b nie następuje c.

9. + – Plus

Symbol plus (+) odpowiada co najmniej jednemu wystąpieniu wyrażenia regularnego poprzedzającego symbol +. Na przykład -

  • ab+c zostanie dopasowane do ciągu abc, abbc, dabc, ale nie zostanie dopasowane do ac, abdc, ponieważ nie ma b w ac i b, po którym nie następuje c w abdc.

10. {m, n} – Nawiasy klamrowe

Nawiasy klamrowe dopasowują dowolne powtórzenia poprzedzające wyrażenie regularne od m do n włącznie. Na przykład -

  • a{2, 4} zostanie dopasowane dla ciągu aaab, baaaac, gaad, ale nie zostanie dopasowane dla ciągów takich jak abc, bc, ponieważ w obu przypadkach istnieje tylko jedno a lub nie ma a.

11. () – Grupa

Symbol grupy służy do grupowania wzorców podrzędnych. Na przykład -

  • (a|b)cd będzie pasować do ciągów takich jak acd, abcd, gacd itp.

Sekwencje specjalne

Sekwencje specjalne nie odpowiadają rzeczywistemu znakowi w ciągu, zamiast tego wskazują konkretną lokalizację w wyszukiwanym ciągu, w której musi nastąpić dopasowanie. Ułatwia to pisanie powszechnie używanych wzorców.

Lista sekwencji specjalnych

Sekwencja specjalna

Opis

Przykłady

A

Dopasowuje, jeśli ciąg zaczyna się od podanego znaku

Afora

dla maniaków

dla świata

B

Dopasowuje, jeśli słowo zaczyna się lub kończy podanym znakiem. (string) sprawdzi początek słowa, a (string) sprawdzi koniec słowa.

ge

maniacy

Dostawać

B

Jest to przeciwieństwo , tj. ciąg nie powinien zaczynać się ani kończyć podanym wyrażeniem regularnym.

Bge

razem

kuźnia

D

Dopasowuje dowolną cyfrę dziesiętną, jest to odpowiednik ustawionej klasy [0-9]

D

123

ojej 1

D

importuj skaner Java

Dopasowuje dowolny znak inny niż cyfra, jest to równoważne ustawionej klasie [^0-9]

D

maniacy

maniak 1

S

Dopasowuje dowolny biały znak.

S

oj ks

a bc a

S

Dopasowuje dowolny znak inny niż białe znaki

S

łóżko

abcd

w

Dopasowuje dowolny znak alfanumeryczny, jest to odpowiednik klasy [a-zA-Z0-9_].

w

123

kurczeKs4

W

Dopasowuje dowolny znak inny niż alfanumeryczny.

W

>$

dawać



Dopasowuje, jeśli ciąg kończy się podanym wyrażeniem regularnym

ab

abcdab

bababab

Funkcje wyrażeń regularnych

Odnośnie moduł zawiera wiele Funkcje które pomagają nam szukać dopasowania w ciągu.

Przyjrzyjmy się różnym funkcjom udostępnianym przez ten moduł do pracy z wyrażeniami regularnymi w Pythonie.

Funkcjonować Opis
ponownie.znajdź() wyszukuje i zwraca wszystkie pasujące wystąpienia na liście
ponownie.kompiluj() Wyrażenia regularne są kompilowane w obiekty wzorców
ponownie.split() Podziel ciąg według wystąpień znaku lub wzorca.
re.sub() Zastępuje wszystkie wystąpienia znaku lub wzorca ciągiem zastępczym.
ponowna ucieczka() Ucieka przed znakiem specjalnym
badania() Wyszukuje pierwsze wystąpienie znaku lub wzorca

Zobaczmy działanie tych funkcji RegEx z definicją i przykładami:

1. ponownie znajdź()

Zwróć wszystkie nienakładające się dopasowania wzorca w ciągu znaków jako listę ciągów. Ciąg jest skanowany od lewej do prawej, a dopasowania są zwracane w znalezionej kolejności.

Znajdowanie wszystkich wystąpień wzorca

W tym kodzie zastosowano wyrażenie regularne ( d+> ) aby znaleźć wszystkie ciągi jednej lub więcej cyfr w danym ciągu. Wyszukuje wartości liczbowe i zapisuje je na liście. W tym przykładzie wyszukuje i drukuje liczby 123456789 I 987654321 z ciągu wejściowego.

Python3




import> re> string>=> '''Hello my Number is 123456789 and> >my friend's number is 987654321'''> regex>=> 'd+'> > match>=> re.findall(regex, string)> print>(match)>

>

bash dla pętli
>

Wyjście

['123456789', '987654321']>

2. ponownie skompiluj()

Wyrażenia regularne są kompilowane w obiekty wzorców, które zawierają metody umożliwiające różne operacje, takie jak wyszukiwanie dopasowań wzorców lub wykonywanie podstawień ciągów.

Przykład 1:

W kodzie zastosowano wzorzec wyrażenia regularnego [a-e]> aby znaleźć i wyświetlić listę wszystkich małych liter od „a” do „e” w ciągu wejściowym Tak, powiedział pan Gibenson Stark. Dane wyjściowe będą ['e', 'a', 'd', 'b', 'e']> , które są pasującymi znakami.

Pyton




import> re> p>=> re.>compile>(>'[a-e]'>)> > print>(p.findall(>'Aye, said Mr. Gibenson Stark'>))>

>

>

Wyjście

['e', 'a', 'd', 'b', 'e', 'a']>

Zrozumienie wyników:

  • Pierwsze wystąpienie to „e” w wyrazie Aye, a nie „A”, ponieważ rozróżniana jest wielkość liter.
  • Następne wystąpienie to „a” w słowach, następnie „d” w słowach, po których następują „b” i „e” w języku Gibenson, ostatnie „a” pasuje do Starka.
  • Ukośnik odwrotny metaznaku „” odgrywa bardzo ważną rolę, ponieważ sygnalizuje różne sekwencje. Jeżeli ukośnik odwrotny ma być użyty bez jego specjalnego znaczenia jako metaznaku, użyj’’

Przykład 2: Ustaw klasę [s,.] dopasuje dowolny biały znak, „,” lub „.”.

Kod używa wyrażeń regularnych do wyszukiwania i wyświetlania wszystkich pojedynczych cyfr i sekwencji cyfr w podanych ciągach wejściowych. Znajduje pojedyncze cyfry za pomocą d> i ciągi cyfr z d+> .

Pyton




import> re> p>=> re.>compile>(>'d'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))> > p>=> re.>compile>(>'d+'>)> print>(p.findall(>'I went to him at 11 A.M. on 4th July 1886'>))>

>

>

Wyjście

['1', '1', '4', '1', '8', '8', '6'] ['11', '4', '1886']>

Przykład 3:

Kod używa wyrażeń regularnych do wyszukiwania i wyświetlania znaków wyrazów, sekwencji znaków wyrazów i znaków niebędących wyrazami w ciągach wejściowych. Zawiera listę pasujących znaków lub sekwencji.

Pyton




import> re> > p>=> re.>compile>(>'w'>)> print>(p.findall(>'He said * in some_lang.'>))> > p>=> re.>compile>(>'w+'>)> print>(p.findall('I went to him at>11> A.M., he> said>*>*>*> in> some_language.'))> > p>=> re.>compile>(>'W'>)> print>(p.findall(>'he said *** in some_language.'>))>

>

>

Wyjście

['H', 'e', 's', 'a', 'i', 'd', 'i', 'n', 's', 'o', 'm', 'e', '_', 'l', 'a', 'n', 'g'] ['I', 'went', 'to', 'him', 'at', '11', 'A', 'M', 'he', 'said', 'in', 'some_language'] [' ', ' ', '*', '*', '*', ' ...>

Przykład 4:

W kodzie zastosowano wzorzec wyrażenia regularnego „ab*”, aby znaleźć i wyświetlić listę wszystkich wystąpień słowa „ab”, po którym następuje zero lub więcej znaków „b” w ciągu wejściowym ababbaabbb. Zwraca następującą listę dopasowań: [„ab”, „abb”, „abbb”].

Pyton




import> re> p>=> re.>compile>(>'ab*'>)> print>(p.findall(>'ababbaabbb'>))>

>

sznurek do niego

>

Wyjście

['ab', 'abb', 'a', 'abbb']>

Zrozumienie wyników:

  • Nasz RE to ab*, któremu „a” towarzyszy dowolne „nie”. liter „b”, zaczynając od 0.
  • Wyjście „ab” jest prawidłowe, ponieważ pojedyncze „a” towarzyszy pojedynczemu „b”.
  • Wyjście „abb” jest prawidłowe, ponieważ pojedyncze „a” towarzyszy 2 „b”.
  • Wyjście „a” jest prawidłowe, ponieważ pojedyncze „a” towarzyszy 0 „b”.
  • Wyjście „abbb” jest prawidłowe, ponieważ pojedyncze „a” towarzyszy 3 „b”.

3. ponownie.split()

Podziel ciąg znaków według wystąpień znaku lub wzorca. Po znalezieniu tego wzorca pozostałe znaki z ciągu zwracane są jako część wynikowej listy.

Składnia:

re.split(pattern, string, maxsplit=0, flags=0)>

Pierwszy parametr, wzór oznacza wyrażenie regularne, ciąg to podany ciąg, w którym będzie wyszukiwany wzorzec i w którym nastąpi dzielenie, maxsplit, jeśli nie zostanie podany, jest uważany za zero '0', a jeśli zostanie podana jakakolwiek wartość różna od zera, to co najwyżej występuje wiele podziałów. Jeśli maxsplit = 1, to ciąg zostanie podzielony tylko raz, w wyniku czego otrzymana zostanie lista o długości 2. Flagi są bardzo przydatne i mogą pomóc w skróceniu kodu, nie są niezbędnymi parametrami, np.: flags = re.IGNORECASE, w tym podziale , wielkość liter, tj. małe lub wielkie litery zostaną zignorowane.

Przykład 1:

Dzieli ciąg znaków, używając znaków innych niż słowa i spacji jako ograniczników, zwracając słowa: ['Words', 'words', 'Words']> . Traktuje apostrofy jako znaki niebędące wyrazami: ['Word', 's', 'words', 'Words']> . Dzieli przy użyciu znaków innych niż słowa i cyfr: ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM']> . Dzieli przy użyciu cyfr jako ograniczników: ['On ', 'th Jan ', ', at ', ':', ' AM']> .

Pyton




from> re>import> split> > print>(split(>'W+'>,>'Words, words , Words'>))> print>(split(>'W+'>,>'Word's words Words'>))> print>(split(>'W+'>,>'On 12th Jan 2016, at 11:02 AM'>))> print>(split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>))>

>

>

Wyjście

['Words', 'words', 'Words'] ['Word', 's', 'words', 'Words'] ['On', '12th', 'Jan', '2016', 'at', '11', '02', 'AM'] ['On ', 'th Jan ', ', at ', ':', ' AM']>

Przykład 2:

Pierwsza instrukcja dzieli ciąg znaków przy pierwszym wystąpieniu jednej lub większej liczby cyfr: ['On ', 'th Jan 2016, at 11:02 AM']> . sekunda dzieli ciąg znaków, używając małych liter od a do f jako ograniczników, bez uwzględniania wielkości liter: ['', 'y, ', 'oy oh ', 'oy, ', 'ome here'> ]>. Trzeci dzieli ciąg znaków, używając małych liter od a do f jako ograniczników, z uwzględnieniem wielkości liter: ['', 'ey, Boy oh ', 'oy, ', 'ome here']> .

Pyton




import> re> print>(re.split(>'d+'>,>'On 12th Jan 2016, at 11:02 AM'>,>1>))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>, flags>=>re.IGNORECASE))> print>(re.split(>'[a-f]+'>,>'Aey, Boy oh boy, come here'>))>

>

>

Wyjście

['On ', 'th Jan 2016, at 11:02 AM'] ['', 'y, ', 'oy oh ', 'oy, ', 'om', ' h', 'r', ''] ['A', 'y, Boy oh ', 'oy, ', 'om', ' h', 'r', '']>

4. re.sub()

Sub w funkcji oznacza SubString, w podanym ciągu znaków (3. parametr) przeszukiwany jest określony wzorzec wyrażenia regularnego i po znalezieniu wzorca podciągu zastępowany jest przez repl (2. parametr), count sprawdza i utrzymuje liczbę razy to się dzieje.

Składnia:

 re.sub(pattern, repl, string, count=0, flags=0)>

Przykład 1:

  • Pierwsza instrukcja zastępuje wszystkie wystąpienia „ub” przez „~*” (wielkość liter nie ma znaczenia): 'S~*ject has ~*er booked already'> .
  • Druga instrukcja zastępuje wszystkie wystąpienia „ub” przez „~*” (wielkość liter ma znaczenie): 'S~*ject has Uber booked already'> .
  • Trzecia instrukcja zastępuje pierwsze wystąpienie „ub” przez „~*” (wielkość liter nie ma znaczenia): 'S~*ject has Uber booked already'> .
  • Czwarty zastępuje „AND” przez „&” (wielkość liter nie ma znaczenia): 'Baked Beans & Spam'> .

Pyton




import> re> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> print>(re.sub(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >count>=>1>, flags>=>re.IGNORECASE))> print>(re.sub(r>'sANDs'>,>' & '>,>'Baked Beans And Spam'>,> >flags>=>re.IGNORECASE))>

>

>

Wyjście

S~*ject has ~*er booked already S~*ject has Uber booked already S~*ject has Uber booked already Baked Beans & Spam>

5. ponownie.subn()

subn() jest podobna do sub() pod każdym względem, z wyjątkiem sposobu dostarczania danych wyjściowych. Zwraca krotkę z liczbą całkowitej zamiany i nowym ciągiem, a nie tylko ciągiem.

Składnia:

 re.subn(pattern, repl, string, count=0, flags=0)>

Przykład:

re.subn()> zastępuje wszystkie wystąpienia wzorca w ciągu i zwraca krotkę ze zmodyfikowanym ciągiem i liczbą dokonanych podstawień. Jest to przydatne zarówno w przypadku podstawień uwzględniających wielkość liter, jak i niewrażliwych na wielkość liter.

Pyton




import> re> > print>(re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>))> > t>=> re.subn(>'ub'>,>'~*'>,>'Subject has Uber booked already'>,> >flags>=>re.IGNORECASE)> print>(t)> print>(>len>(t))> print>(t[>0>])>

>

>

Wyjście

('S~*ject has Uber booked already', 1) ('S~*ject has ~*er booked already', 2) 2 S~*ject has ~*er booked already>

6. ponowna ucieczka()

Zwraca ciąg znaków ze wszystkimi znakami innymi niż alfanumeryczne z ukośnikiem odwrotnym. Jest to przydatne, jeśli chcesz dopasować dowolny ciąg literałowy, który może zawierać metaznaki wyrażeń regularnych.

Składnia:

re.escape(string)>

Przykład:

re.escape()> służy do ucieczki znaków specjalnych w ciągu, dzięki czemu można go bezpiecznie używać jako wzorca w wyrażeniach regularnych. Zapewnia to, że wszelkie znaki o specjalnym znaczeniu w wyrażeniach regularnych będą traktowane jako znaki dosłowne.

Pyton




import> re> print>(re.escape(>'This is Awesome even 1 AM'>))> print>(re.escape(>'I Asked what is this [a-9], he said ^WoW'>))>

>

>

Wyjście

This is Awesome even 1 AM I Asked what is this [a-9], he said   ^WoW>

7. ponowne wyszukiwanie()

Ta metoda albo zwraca None (jeśli wzorzec nie pasuje), albo re.MatchObject zawiera informację o pasującej części ciągu. Ta metoda kończy się po pierwszym dopasowaniu, dlatego najlepiej nadaje się do testowania wyrażeń regularnych, a nie do wyodrębniania danych.

blokuj reklamy YouTube na Androidzie

Przykład: Wyszukiwanie wystąpienia wzorca

Ten kod używa wyrażenia regularnego do wyszukiwania wzorca w podanym ciągu. Jeśli zostanie znalezione dopasowanie, wyodrębnia i wypisuje dopasowane fragmenty ciągu.

W tym konkretnym przykładzie wyszukuje wzorzec składający się z miesiąca (litery), po którym następuje dzień (cyfry) w ciągu wejściowym Urodziłem się 24 czerwca. Jeśli zostanie znalezione dopasowanie, wypisuje pełne dopasowanie, czyli miesiąc i dzień.

Python3




import> re> regex>=> r>'([a-zA-Z]+) (d+)'> > match>=> re.search(regex,>'I was born on June 24'>)> if> match !>=> None>:> >print> (>'Match at index %s, %s'> %> (match.start(), match.end()))> >print> (>'Full match: %s'> %> (match.group(>0>)))> >print> (>'Month: %s'> %> (match.group(>1>)))> >print> (>'Day: %s'> %> (match.group(>2>)))> > else>:> >print> (>'The regex pattern does not match.'>)>

>

>

Wyjście

Match at index 14, 21 Full match: June 24 Month: June Day: 24>

ZESTAWY

A Ustawić to zestaw znaków ujętych w nawiasy „[]”. Zestawy służą do dopasowywania pojedynczego znaku w zestawie znaków określonym w nawiasach. Poniżej lista zestawów:

Ustawić Opis
{N,} Kwantyfikuje poprzedzający znak lub grupę i dopasowuje co najmniej n wystąpień.
* Kwantyfikuje poprzedzający znak lub grupę i dopasowuje zero lub więcej wystąpień.
[0123] Dopasowuje określone cyfry (0, 1, 2 lub 3)
[^arn] pasuje do dowolnego znaku Z WYJĄTKIEM a, r i n
D Pasuje do dowolnej cyfry (0-9).
[0-5][0-9] dopasowuje dowolne liczby dwucyfrowe od 00 do 59
w Dopasowuje dowolny znak alfanumeryczny (a-z, A-Z, 0-9 lub _).
[jakiś] Dopasowuje dowolne małe litery pomiędzy a i n.
D Dopasowuje dowolny znak inny niż cyfra.
[arn] dopasowuje miejsce, w którym występuje jeden z określonych znaków (a, r lub n).
[a-zA-Z] dopasowuje dowolny znak od a do z, małą lub wielką literę
[0-9] dopasowuje dowolną cyfrę od 0 do 9

Dopasuj obiekt

Obiekt Match zawiera wszystkie informacje o wyszukiwaniu i wyniku. Jeśli nie znaleziono żadnego dopasowania, zwrócona zostanie wartość None. Przyjrzyjmy się niektórym powszechnie używanym metodom i atrybutom obiektu dopasowania.

1. Pobieranie ciągu znaków i wyrażenia regularnego

mecz.re atrybut zwraca przekazane wyrażenie regularne i dopasowanie.ciąg atrybut zwraca przekazany ciąg.

Przykład: Pobieranie ciągu znaków i wyrażenia regularnego dopasowanego obiektu

Kod szuka litery G na granicy słowa w ciągu Witamy w GeeksForGeeks i drukuje wzorzec wyrażenia regularnego ( res.re> ) i oryginalny ciąg ( res.string> ) .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'G'>, s)> > print>(res.re)> print>(res.string)>

>

>

Wyjście

re.compile('G') Welcome to GeeksForGeeks>

2. Pobieranie indeksu dopasowanego obiektu

  • Metoda start() zwraca indeks początkowy dopasowanego podłańcucha
  • Metoda end() zwraca indeks końcowy dopasowanego podłańcucha
  • Metoda span() zwraca krotkę zawierającą początkowy i końcowy indeks dopasowanego podłańcucha

Przykład: Pobieranie indeksu dopasowanego obiektu

Kod wyszukuje podciąg Gee na granicy słowa w ciągu Witamy w GeeksForGeeks i wypisuje indeks początkowy dopasowania (res.start()>), indeks końcowy dopasowania (res.end()>) i długość dopasowania (res.span()>).

Python3




import> re> > s>=> 'Welcome to GeeksForGeeks'> > res>=> re.search(r>'Gee'>, s)> > print>(res.start())> print>(res.end())> print>(res.span())>

>

>

Wyjście

11 14 (11, 14)>

3. Uzyskanie dopasowanego podciągu

Metoda group() zwraca część ciągu, dla której pasują wzorce. Aby lepiej zrozumieć, zobacz poniższy przykład.

Przykład: Uzyskiwanie dopasowanego podciągu

Kod wyszukuje sekwencję dwóch znaków innych niż cyfry, po których następuje spacja i litera „t” w ciągu Witamy w GeeksForGeeks i drukuje dopasowany tekst za pomocą res.group()> .

Python3




import> re> s>=> 'Welcome to GeeksForGeeks'> res>=> re.search(r>'D{2} t'>, s)> print>(res.group())>

>

>

Wyjście

me t>

W powyższym przykładzie nasz wzorzec określa ciąg znaków zawierający co najmniej 2 znaki, po których następuje spacja, a po tej spacji następuje t.

Powiązany artykuł:

Odniesienie:
https://docs.python.org/2/library/re.html

Omówiliśmy RegEx w Pythonie, przeszliśmy przez metaznaki, funkcje i sekwencje specjalne w RegEx Python.

Wyrażenie regularne jest bardzo ważnym pojęciem w Pythonie, staraliśmy się to wyjaśnić w łatwy sposób. Mam nadzieję, że pomoże to w Twojej podróży w Pythonie!!