Łatwe wyrażenia regularne w Pythonie

Wyrażenia regularne (regex) to potężne narzędzia służące do dopasowywania i manipulowania ciągami znaków na podstawie wzorców. W Pythonie moduł re zapewnia obsługę wyrażeń regularnych, umożliwiając wydajne wykonywanie złożonych operacji na ciągach znaków. Ten artykuł wprowadzi Cię w podstawy wyrażeń regularnych i pokaże, jak skutecznie ich używać w Pythonie.

Rozpoczęcie pracy z modułem re

Aby używać wyrażeń regularnych w Pythonie, musisz zaimportować moduł re. Ten moduł udostępnia kilka funkcji do pracy ze wzorcami regex:

  • re.match() - Sprawdza zgodność tylko na początku ciągu.
  • re.search() - Przeszukuje cały ciąg w poszukiwaniu dopasowania.
  • re.findall() - Znajduje wszystkie dopasowania w ciągu i zwraca je jako listę.
  • re.sub() - Zastępuje dopasowania w ciągu określonym zamiennikiem.

Podstawowe dopasowywanie wzorców

Wyrażenia regularne używają znaków specjalnych do definiowania wzorców wyszukiwania. Oto kilka podstawowych wzorców:

  • . - Dopasowuje dowolny pojedynczy znak oprócz znaku nowej linii.
  • \d - Dopasowuje dowolną cyfrę (równoważną [0-9]).
  • \w - Dopasowuje dowolny znak alfanumeryczny (równoważny [a-zA-Z0-9_]).
  • \s ​​- Dopasowuje dowolny znak odstępu.
  • ^ - Dopasowuje początek ciągu.
  • $ – Dopasowuje koniec ciągu.

Przykłady

Oto kilka przykładów ilustrujących podstawowe dopasowywanie wzorców:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

Używanie wyrażeń regularnych z grupami

Grupy służą do przechwytywania części dopasowanego tekstu. Są definiowane za pomocą nawiasów. Na przykład, aby wyodrębnić określone części wzorca, możesz użyć grup:

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

Używanie znaków specjalnych

Wyrażenia regularne zawierają kilka znaków specjalnych, umożliwiających bardziej złożone dopasowywanie wzorców:

  • * – Wyszukuje 0 lub więcej wystąpień poprzedniego elementu.
  • + – Wyszukuje jedno lub więcej wystąpień poprzedniego elementu.
  • ? - Wyszukuje 0 lub 1 wystąpienie poprzedniego elementu.
  • {n} - Dokładnie pasuje do n wystąpień poprzedniego elementu.
  • | - Dopasowuje wzorzec poprzedzający lub następujący po nim.

Przykłady

Oto kilka przykładów użycia znaków specjalnych:

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

Zastępowanie tekstu wyrażeniami regularnymi

Funkcja re.sub() służy do zamiany części ciągu, które pasują do wzorca:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

Wniosek

Wyrażenia regularne są potężnym narzędziem do dopasowywania wzorców i manipulacji tekstem w Pythonie. Dzięki modułowi re możesz wyszukiwać, dopasowywać i zamieniać tekst na podstawie złożonych wzorców. Rozumiejąc podstawową składnię i znaki specjalne, możesz wykorzystać wyrażenia regularne do efektywnego obsługiwania szerokiego zakresu zadań przetwarzania tekstu.