W tym temacie nauczymy się wyrażeń regularnych Python.
Definicja: Wyrażenia regularne, czasami nazywane Re lub Regex lub RegexP, są sekwencjami znaków, które pasują do wzorów w tekście/ciągu. Python ma wbudowany moduł RE, aby to wykonać.
Powszechne zastosowania wyrażenia regularnego to:
- Wyszukaj ciąg (Wyszukaj i znajdź)
- Znajdź cały pasujący ciąg (Findall)
- Podziel na podaj (podzielony)
- Wymień część ciągu (sub)
Wyrażenie regularne to kombinacja alfabetów, metaczaraków. Dostępne są więc następujące metalowce.
- \ Służy do upuszczenia/ignorowania specjalnego znaczenia charakteru
- [] Wskazuje to klasę postaci Ex: [A-Z], [A-ZA-Z0-9]
- ^ To pasuje do początku tekstu
- $ To odpowiada końca tekstu
- . To odpowiada dowolnej postaci oprócz nowej linii
- ? Dopasuj zero lub jedno zdarzenie.
- |. Oznacza lub (dopasuj do dowolnego z oddzielonych przez niego postaci.
- * Dowolna liczba zdarzeń (w tym 0 zdarzeń)
- + Jedno lub więcej zdarzeń
- Wskaż kilka wystąpień poprzedniego RE, aby dopasować.
- () Załącz grupę Regexp
Jeśli używamy backslash „\”, wskazuje na różne sekwencje. Chcę używać BackSlash bez jego specjalnego znaczenia użycie „\\”.
- \ D pasuje do dowolnej cyfry dziesiętnej, jest to takie samo jak set klasa [0-9]
- \ D pasuje do dowolnej niecyfrującej postaci
- D pasuje do dowolnego charakteru Whitespace.
- Pasuje do dowolnej postaci innych
- \ w pasuje do dowolnego postaci alfanumerycznej; To jest to samo co klasa [A-ZA-Z0-9_].
- \ W pasuje do dowolnego niealfanumerycznego.
Poniższa metoda dostępna w module RE:
Rmi.szukaj() :
Ta metoda zwraca pasującą część łańcucha i kończy się po pierwszym meczu. Można to wykorzystać do testowania wyrażenia zamiast wyodrębnienia danych.
Składnia: Odnośnie.Wyszukaj (wzór, ciąg)
Wartość zwracana:
Nic : Wzór nie pasuje
Strunowy : dopasowany wzór
Były: W tym przykładzie wyszukiwanie miesiąca i daty
import re
Regexp = r "([a-za-z]+) (\ d+)"
mecz = re.Wyszukaj (Regexp, „My Syn Birthday to 20 lipca”)
Jeśli dopasuj się != Brak:
Drukuj („dopasuj w indeksie %s, %s” (dopasowanie.start (), dopasuj.end ()))#Zapewnia indeks dopasowanego ciągu
Drukuj („Pełny mecz: % s” % (dopasowanie.grupa (0)))
Drukuj („miesiąc: % s” % (dopasowanie.Grupa 1)))
Drukuj („dzień: % s” % (dopasowanie.grupa (2)))
w przeciwnym razie:
druk („podany wzór regex nie pasuje”)
Odnośnie.mecz() :
Ta metoda przeszukuje i zwraca pierwszy mecz. To sprawdza mecz tylko na początku ciągu.
Składnia: Odnośnie.dopasowanie (wzór, ciąg)
Wartość zwracana:
Brak: wzór nie pasuje
String: dopasowany wzór
Np.: Ten przykład pokazuje dopasowany wzór początek ciągów
import re
Regexp = r "([a-za-z]+) (\ d+)"
mecz = re.mecz (Regexp, „20 lipca”)
Jeśli dopasowanie == Brak:
Drukuj („nie ważna data”)
w przeciwnym razie:
Drukuj („dany ciąg: % s” % (dopasowanie.Grupa()))
Drukuj („miesiąc: % s” % (dopasowanie.Grupa 1)))
Drukuj („dzień: % s” % (dopasowanie.grupa (2)))
Np.: Aby pokazać wzór, który nie jest dopasowany na początku
import re
mecz = re.mecz (Regexp, „My Syn Birthday to 20 lipca”)
Jeśli dopasowanie == Brak:
Drukuj („nie ważna data”)
w przeciwnym razie:
Drukuj („dany ciąg: % s” % (dopasowanie.Grupa()))
Drukuj („miesiąc: % s” % (dopasowanie.Grupa 1)))
Drukuj („dzień: % s” % (dopasowanie.grupa (2)))
Odnośnie.Znajdź wszystko() :
Ta metoda zwraca wszystkie dopasowania wzoru w ciągu. Ciąg jest przeszukiwany od początku do końca, a dopasowania są zwracane w znalezionej kolejności.
Składnia : Odnośnie.findall (wzór, ciąg)
Wartość zwracana
Pusty ciąg ([)]: wzór nie pasuje
Lista ciągów: dopasowany wzór
Np.: Wyrażenie regularne do znalezienia cyfr
import re
string = "" Bangalore Pincode to 560066 i
Gulbarga Pincode to 585101 „” „”
Regexp = '\ d+'
mecz = re.FINDALL (RegexP, ciąg)
wydruku (dopasowanie)
Np.: Znajdź numer telefonu komórkowego (dokładny 10 -cyfrowy numer) z podanego tekstu
import re
String = "" „Bangalore Office Numer 1234567891,
Mój numer to 8884278690, kontakt awaryjny 3456789123
Nieprawidłowy numer 898883456 „” „”
Regexp = '\ d 10'#to wyrażenie regularne, aby dopasować dokładną liczbę 10 cyfr
mecz = re.FINDALL (RegexP, ciąg)
wydruku (dopasowanie)
Odnośnie.skompilować():
Wyrażenia regularne są kompilowane w obiekty wzorów i mogą być stosowane w metodach. Przykład wyszukiwania dopasowań wzorców, podstawienia ciągów.
Były:
import re
E = re.kompila („[a-e]”)
Drukuj (e.FINDALL („Urodziłem się o 11 a.M. 20 lipca 1989 r.))
E = re.kompila ('\ d') # \ d jest równoważny [0-9].
Drukuj (e.FINDALL („Urodziłem się o 11 a.M. 20 lipca 1989 r.))
p = re.kompila ('\ d+')#grupa jednej lub więcej cyfr
Drukuj (str.FINDALL („Urodziłem się o 11 a.M. 20 lipca 1989 r.))
Odnośnie.podział():
Podzielony ciąg w oparciu o wystąpienia wzoru. Jeśli znaleziono wzór, pozostałe znaki z ciągu zostaną zwrócone jako część uzyskanej listy. Możemy określić maksymalny podział dla danego ciągu.
Składnia - Odnośnie.split (wzór, ciąg, maxsplit = 0)
Zwracaj wartości:
Pusta lista ([]): wzór nie pasuje
Lista ciągów: dopasowany wzór
Były:
import re
# '\ W+' pasuje do znaków niealfanumerycznych lub grupy znaków
# podzielony po znalezieniu ”,„ lub białe ”
Drukuj (re.split („\ w+”, „dobry, lepszy, najlepszy”)))
Drukuj (re.split ('\ w+', „książki książki książki”)))
# Tutaj „:”, „,”, „nie są alfanumeryczne, w których następuje podział
Drukuj (re.Split („\ w+”, „urodzony 20 lipca 1989 r., O 11:00))
# '\ D+' oznacza znaki numeryczne lub grupę znaków
# Splating odbywa się w „20”, „1989”, „11”, „00”
Drukuj (re.Split („\ d+”, „urodzony 20 lipca 1989 r., O 11:00))
# Określony maksymalny podział jako 1
Drukuj (re.Split („\ d+”, urodzony 20 lipca 1989 r., O 11:00
AM ', maxsplit = 1))
Odnośnie.pod():
Tutaj znaczenie „sub” to podłoże. W tej funkcji podane wyrażenie regularne (parametr wzorca) jest dopasowany do podanego ciągu (parametr ciągów); Jeśli zostanie znaleziony podłoże, jest zastępowany parametrem reportażu.
Tutaj, w hrabie, określ liczbę wymiany regularności.
Tutaj możemy określić flagę Regex (np. IgnorCase)
Składnia:- Odnośnie.sub (wzór, repl, ciąg, count = 0, flagi = 0)
Wartość zwracana:
Zwraca nowy ciąg po wymianie wzoru innego
Zwraca ten sam ciąg
Były:
import re
# Ex: Wzór „lly” pasuje do ciągu w „pomyślnie” i „delly”
Drukuj (re.sub („lly”, „#$”, „umówienie lekarza udane w Delly”)))
# Ex: Case Hasbeen zignorował, używając flagi, „lly” dopasuj dwa razy do sznurka
# Po dopasowaniu „lly” zastępuje się przez „~*” w „pomyślnie” i „delly”.
Drukuj (re.sub („lly”, „#$”, „umówienie lekarza udane w delly”, flagi = rec.IgnorCase))
# Np.: Case Serstivity, „Lly” nie zostanie ponownie ujęta.
Drukuj (re.sub („lly”, „#$”, „umówienie lekarza udane w Delly”)))
# Np.: Jako liczba = 1, maksymalny czas zastąpienia to 1
Drukuj (re.sub („lly”, „#$”, „umówić się na lekarza udane w delly”, count = 1, flagi = re.IgnorCase))
Odnośnie.Subn ():
Subn () funkcjonalność taka sama jak sub () na wszystkie sposoby; Jedyną różnicą jest dostarczanie wyjścia. Zwraca krotkę zawierającą liczbę wymiany i nowy ciąg.
Składnia:- Odnośnie.subn (wzór, repl, ciąg, count = 0, flagi = 0)
Były:
import re
Drukuj (re.Subn („lly”, „#$”, „umówienie lekarza udane w Delly”))
t = re.Subn („lly”, „#$”, „umówić się na lekarza zarezerwowane z powodzeniem w delly”, flagi = rec.IgnorCase)
Drukuj (t)
druk (len (t))
# Da to takie samo wyjście co sub ()
Drukuj (t [0])
Odnośnie.ucieczka() :
Zwraca to ciąg z backslash „\” przed każdym postacią niealfanumeryczną. Jest to pomocne, jeśli chcemy dopasować dowolną dosłowną ciąg, który może mieć w nim metacharacterów wyrażeń regularnych.
Składnia:- Odnośnie.Escape (String)
Były:
import re
# Poniższy przypadek ma tylko ”, nie jest alfanumeryczny
Drukuj (re.Escape („Spotkanie lekarza zarezerwowane pomyślnie o 13:00”))
is
Drukuj (re.Escape („Zapytał, co to za [0-9], powiedziałem \ t ^klasa liczba”)))
Wniosek:
Artykuł obejmował rzeczy potrzebne do zrozumienia wyrażenia regularnego w dowolnej aplikacji. Nauczyliśmy się różnych metod i metataków obecnych w Python Regexp przy użyciu przykładów.