Wyrażenie regularne Pythona

Wyrażenie regularne Pythona
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:

  1. Wyszukaj ciąg (Wyszukaj i znajdź)
  2. Znajdź cały pasujący ciąg (Findall)
  3. Podziel na podaj (podzielony)
  4. 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.