(Py) Moduł re (Regular expression)*

Moduł re (Regular expression)

Wstęp

  • Moduł re umożliwia przetwarzanie tekstu zgodnie z zdefiniowanym wyrażeniem regularnym.
  • Na stronie regex101.com dostępny jest darmowy edytor online, umożliwiający testowanie własnych wyrażeń regularnych.

Wyrażenie regularne modułu re

Podstawowe

Wzorcowy ciąg znaku powinien być typu r”String”.

  • re.search(Str<wzorzec>, Str<łańcuch>, <modifikator>*) – Zwraca obiekt (re.Search) zawierający pierwsze pasujące dopasowanie wzorca do podanego łańcucha znaków.
  • re.match(Str<wzorzec>, Str<łańcuch>, <modifikator>*) – Zwraca obiekt (re.Match) zawierający pierwsze pasujące dopasowanie wzorca do podanego łańcucha znaków, zaczynające się od początku wiersza.
  • re.fullmatch(Str<wzorzec>, Str<łańcuch>) – Zwraca obiekt (re.Match) zawierający pełne dopasowanie wzorca do podanego łańcucha znaków.
  • re.findall(Str<wzorzec>, Str<łańcuch>) – Zwraca wszystkie nienakładające się dopasowania wzorca do łańcucha znaków, jako listę stringów. Łańcuch snaków jest skanowany od lewej do prawej, a dopasowania są zwracane w znalezionej kolejności.

Modifikatory

  • re.I – Nie zważa na wielkość znaków.
  • re.L – Prowadzi interpretacje na postawie języka naturalnego.
  • re.M – $ oznacza koniec lini a ^ początek lini.
  • re.S – . pasuje również do znaku końca wiersza.
  • re.U – Prowadzi interpretacje zgodnie z znakami Unicode.
  • re.X – Zezwala na dokładniejszą składnię wyrażenia regularnego. Ignoruje białe znaki (z wyjątkiem znaków wewnątrz zestawu [] lub po ucieczce przez \) i traktuje znak # bez znaku \ jako znacznik komentarza.

Pobieranie zmiennej

  • (?P<Nazwa zmiennej>wyrażenie_regularne) – Przypisuje wartość pasującą do wskazanego wyrażenia regularnego, do zmiennej o podanej nazwie.

Przykładowe użycie modułu re

import re


# Przykład 1:testString = """
100    084f.a9c9.a508    DYNAMIC     Tw1/0/6
100    10b3.d643.db8c    DYNAMIC     Tw1/0/7
100    308b.b288.c370    DYNAMIC     Po4
"""

testString = testString.splitlines()
for row in testString:
    # Wyrażenie regularne:
    regex = re.match(r"^(?P<vlan>\w+)\s+(?P<mac>\w+\.\w+\.\w+)\s+(?P<type>\w+)\s+(?P<port>.+)$", row)
    try:
        matches = regex.groupdict()
        print(matches)
    except:
        pass
### Przykład 2:
def alphanumeric(password):
    regex = re.compile('^[0-9a-zA-Z]+$')
    if regex.match(input_string) is None:
        return False
    else:
        return True

# Przykład 3:
line = "Luke, I am your father!"
result = re.search(r'your', line)
print(result) # <re.Match object; span=(11, 15), match='your'>
print(result.group()) # your

# Przykład 4:
line = "Luke, I am your father!"
result = re.match(r'Luke', line)
print(result) # <re.Match object; span=(0, 4), match='Luke'>
print(result.group()) # Luke
 
result = re.match(r'your', line)
print(result) # None

REQEX

Tworzenie wyrażeń regularnych

Zakresy znaków

  • [abc] – Pojedynczy znak „a”, „b” bądź „c”.
  • [a-z] – Pojedynczy znak z zakresu od „a” do „z”.
  • [A-Z] – Pojedynczy znak z zakresu od „A” do „Z”.
  • [0-9] – Pojedynczy znak z zakresu od „0” do „9”.
  • [^a-d] – Pojedynczy znak nie należący do zakresu od „a” do „d”.
  • [0-9a-b] – Pojedynczy znak z zakresu od „0” do „9” bądź z zakresu od „a” do „z”.
  • [zakres]{3} – Dokładnie trzy znaki ze wskazanego zakresu.
  • [zakres]{3,} – Trzy bądź więcej znaków ze wskazanego zakresu.
  • [zakres]{1,3} – Od jednego do trzech znaków ze wskazanego zakresu.
  • [zakres]* – Dowolna liczba znaków bądź żaden.
  • [zakres]+ – Dowolna liczba znaków.
  • [zakres]? – Jeden znak bądź żaden.

Grupowanie

  • ()
  • (?:)
  • (?#)
  • (?=)
  • (?!)
  • (?<=)
  • (?<!)

Przykładowe wyrażenie regularne

Przydatne sieciowe wyrażenia regularne

  • Adres MAC ([0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2}\:[0-9a-fA-F]{2})
  • Adres MAC ([0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5})
  • Adres IP4 ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})
  • Adres IP4 (\d+.\d+.\d+.\d+)
  • Adres IP4 ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
  • Datetime (\w{3} \d{2} \d{2}:\d{2}:\d{2})

Inne wyrażenia regularne

  • Dowolne znaki do wskazanego znaku końcowego ” ([^,”]+)

Bezpieczne hasło

  • ^(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]{6,}$ – Przynajmniej jedna litera oraz jedna cyfra, miniumum 6 znaków.
  • ^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[@$!%#?&])[A-Za-z0-9@$!%#?&]{6,}$ – Przynajmniej jedna litera, jedna cyfa oraz jeden znak specjalny, miniumum 6 znaków.
  • ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])[a-zA-Z0-9]{6,}$ – Przynajmniej jedna mała litera, jedna duża litera oraz jedna cyfa, miniumum 6 znaków.
  • ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@$!%?&])[A-Za-z0-9@$!%?&]{6,}$ – Przynajmniej jedna mała litera, jedna duża litera, jedna cyfa oraz jeden znak specjalny, miniumum 6 znaków.

Pozostałe tematy związane z bibliotekami / modułami Python

Podstawowe

Rozszerzone

SQL

PyQt 5

Automatyzacja

Data Mining

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz