Krótki przewodnik po wyrażeniach regularnych

G Suite i Office 360 użytkowników i dla programistów Pythona

(Badi James) (20 maja 2020 r.)

Język rzadko jest łatwy w użyciu podczas wydobywania spostrzeżeń. Nawet zadanie znalezienia i policzenia, ile razy słowo pojawia się w tekście, zadanie, które na pierwszy rzut oka wydaje się być łatwe do wykonania w nowoczesnych edytorach tekstu i bibliotekach kodujących, może szybko napotkać komplikacje.

Weźmy na przykład próbę sprawdzenia, czy niebo jest wspomniane w tekście. Prostym podejściem byłoby po prostu:

  • Ctrl + F „niebo” (jeśli używasz edytora tekstu lub edytora tekstu)
  • „niebo” w body\_of\_text (jeśli piszesz script w pythonie)

Jednak oba podejścia nie zawsze znajdują wzmianki o niebie i czasami dają fałszywe alarmy. Ograniczenia tych podejść wynikają ze sposobu poszukiwania dokładnej sekwencji znaków s-k-y. Poniżej wymienione są niektóre cechy języka, które spowodują niepowodzenie tego podejścia:

  • Wielkie litery: Jeśli zdanie zaczyna się od „Sky” lub „Sky” pojawia się jako część właściwego rzeczownika (lub jeśli autor tekstu miał złamany klawisz Caps Lock), te wystąpienia słowa nie zostaną znalezione.
  • Pisownia innych słów: Obecność słów takich jak „pe sky ”,„ ri sky ”itp. spowoduje „Niebo”, które ma zostać fałszywie wykryte.
  • Liczba mnoga: „Niebo” pozostanie niewykryte.

Wiele edytorów tekstu i edytorów tekstu ma opcje dostępne w polu „Znajdź i Zastąp ”funkcje dotyczące pierwszych dwóch z powyższych problemów. W rzeczywistości zazwyczaj opcje takie jak „Ignoruj ​​wielkość liter” i „Dopasuj całe słowo” są domyślnie włączone. Jednak problem braku alternatywnych form słowa (liczba mnoga, czasy, rodzaj itp.) Lub alternatywnej pisowni (na przykład wiele odmian imienia Mohammad) będzie nadal obecny.

Dzięki Pythonowi możesz rozwinąć Twój wiersz kodu search\_phrase in body\_of\_text , dodając warunkowe, aby zakryć każdą odmianę słowa i wykluczyć fałszywie pozytywne dopasowania. Ale może to być trudne i może sprawić, że kod tego rzekomo prostego zadania będzie długi i trudny do utrzymania.

Wprowadź wyrażenia regularne

Wyrażenia regularne (lub w skrócie regex) to potężne narzędzia do wyszukiwania wzorów znaków w tekście. Pomysł polega na tym, że zamiast dawać swojemu kodowi lub edytorowi tekstu określoną sekwencję znaków do znalezienia, dajesz mu wzorzec (wyrażenie regularne) opisujące reguły, których chcesz użyć do poszerzenia lub ograniczenia pasujących segmentów tekstu podany wzorzec.

Określenie tych reguł uzyskuje się poprzez dodanie znaków specjalnych do wyrażenia regularnego. Weźmy powyższy przykład „nieba”. Wyrażenie regularne „\ bsk (y | ies) \ b” będzie pasowało zarówno do „nieba”, jak i do „nieba”, ale nie będzie pasowało do słów „brzydki”, „ryzykowny” ani żadnego innego słowa zawierającego s-k-y. Przeanalizujmy przeznaczenie każdego z dodanych przez nas znaków specjalnych:

„ \ b ”otaczające każdy koniec naszego wyrażenia określa granice słów, tj. białe znaki, znaki interpunkcyjne, początek lub koniec tekstu itp. To właśnie zapobiega dopasowaniu wyrażenia regularnego do innych słowa, w których „niebo” stanowi część pisowni (np. „brzydki” lub „Skype”).

Nawiasy tworzą grupę przechwytywania. Służy do określenia, do której części wyrażenia regularnego chcesz zastosować określoną regułę. W tej grupie przechwytywania mamy znak „|” (inaczej pionowa kreska). Działa jak operator OR, określając, że wyrażenie po lewej stronie („y”) lub wyrażenie po prawej stronie („ies”) może stanowić część dopasowania. To pozwala naszemu wyrażeniu regularnemu dopasować zarówno pojedyncze „niebo”, jak i liczbę mnogą „niebiosa”.

Aby rozwiązać problem kapitalizacji, zwykle nie jest to problem, ponieważ opcja „Ignoruj ​​wielkość liter” w polu Znajdź funkcje w większości edytorów tekstu i edytorów tekstu mogą być również używane podczas wyszukiwania przy użyciu wyrażenia regularnego. Korzystając z biblioteki wyrażeń regularnych Pythona re , można użyć flagi e IGNORECASE podczas wyszukiwania za pomocą wyrażenia regularnego (więcej o tym później). Jednak bez tej opcji lub tej flagi możemy dopasować „Niebo”, „Niebo”, „Niebo” i „Niebo”, rozszerzając nasze wyrażenie regularne jako takie: „\ b (S | s) k (y | ies) \ b”

Jak widać, wyrażenia regularne sprawiły, że poszukiwanie nieba stało się o wiele bardziej owocne! Jednak był to stosunkowo prosty przykład tego, co może zrobić regex. Poniżej znajduje się kilka innych przykładów, które pokazują moc i wszechstronność wyrażeń regularnych:

  • M (u | o) hamm? (E | a) (d | t) pasuje do większości odmiany pisowni słowa Mohammad
  • (? Mountain) Bike pasuje do Bike ale nie Mountain Bike
  • coffee (?! data) pasuje do kawa ale nie data kawy
  • (https: \ / \ /)? (www \.)? [a- z0–9] + \. [az] + (\. [az] +)? pasuje do wielu adresów URL
  • [a-zA-Z0–9 -\_.] + @ [a-zA-Z] + \. [a-zA-Z] + ( \. [a-zA-Z] +)? pasuje do wielu adresów e-mail

regexr.com: świetna witryna do nauki Regex

Przykłady opisane wcześniej mogły sprawić, że pomyślałeś „to wygląda przydatne, ale jak mam zapamiętać wszystkie różne specjalne postacie i czym się zajmują? Jak mogę sprawdzić, czy moje wyrażenie regularne działa zgodnie z przeznaczeniem? ”. Nie martw się, regexr.com jest tutaj, aby pomóc.

Na tej stronie możesz tworzyć wyrażenia regularne, korzystając z dostarczonych ściągów jako przewodników i wklej jakiś tekst, aby je przetestować. Wszelkie dopasowania zostaną podświetlone w tekście i wyświetlona liczba dopasowań. Twoje wyrażenie regularne jest oznaczone kolorami, a przydatne wskazówki opisują, co robi każdy znak po najechaniu na niego myszą. Jest to świetne rozwiązanie do nauki wyrażeń regularnych przy użyciu wyrażenia regularnego.

Używanie wyrażenia regularnego w Dokumentach i Arkuszach Google

Używanie Regex w tych aplikacjach G Suite jest proste i przyjazne dla użytkownika. Po prostu naciśnij Ctrl + F, a następnie kliknij trzy pionowe kropki w polu wyszukiwania, które pojawia się w lewym górnym rogu przeglądarki. Alternatywnie, przejdź do Edycja -> Znajdź i zamień w menu rozwijanych. Spowoduje to otwarcie okna Znajdź i zamień. Znajdziesz tutaj pole wyboru Dopasuj, używając wyrażeń regularnych (Dokumenty) lub Szukaj używając wyrażeń regularnych (Arkusze). Po wybraniu możesz wkleić swoje wyrażenie regularne w polu Znajdź . Wszelkie dopasowania zostaną podświetlone w dokumencie, a liczba dopasowań zostanie wyświetlona w polu Znajdź . Nadal możesz używać innych dostępnych opcji Znajdź i zamień, takich jak Dopasuj wielkość liter , a Twoje wyrażenie regularne będzie się odpowiednio zachowywać.

Używanie wyrażenia „Regex” (symbole wieloznaczne) w MS Word i Excel

Niestety wyrażenia regularne nie są obsługiwane w programach Word i Excel. Jednak zezwalają na „symbole wieloznaczne”, które zachowują się w podobny sposób, chociaż używane symbole są czasami różne.

W programie Word wyszukiwanie przy użyciu symboli wieloznacznych można uzyskać za pomocą funkcji Zaawansowane wyszukiwanie i zamienianie. Szczegółowe informacje o tym, jak przejść do tej funkcji, jak włączyć symbole wieloznaczne i co robi każdy znak wieloznaczny, można znaleźć w tym przewodniku dostępnym w witrynie pomocy technicznej pakietu Office.

W programie Excel nie jest od razu oczywiste, jak wyszukiwać za pomocą symboli wieloznacznych, ponieważ nie jest to częścią żadnej funkcji wyszukiwania. Możesz jednak znaleźć komórki pasujące do wyszukiwanej frazy i zawierające symbole wieloznaczne, filtrując arkusze za pomocą filtrów zaawansowanych. Postępuj zgodnie z tym przewodnikiem w witrynie pomocy technicznej pakietu Office, w której w sekcji „Kryteria symboli wieloznacznych” znajdziesz informacje o używaniu symboli wieloznacznych jako części zaawansowanych filtrów.

Gdzie uzyskać dostęp do filtrów zaawansowanych w programie Excel, które pozwalają na użycie symboli wieloznacznych

Używanie wyrażenia regularnego w Pythonie

re jest dostarczana jako część podstawowej instalacji Pythona. Ta biblioteka zawiera wiele funkcji, które pozwalają analizować łańcuchy znaków i manipulować nimi przy użyciu wyrażeń regularnych.

Kilka kluczowych funkcji to:

  • re.search ( wzorzec, ciąg, flagi = 0 ) : wyszukuje pierwszą lokalizację w ciągu , gdzie pasuje wzorzec (wyrażenie regularne), zwracając obiekt dopasowania opis dopasowania lub Brak, jeśli nie znaleziono dopasowania.
  • re.match ( wzorzec , string, flags = 0 ) : zachowuje się tak samo jak re.search (), z tym że wyszukuje tylko dopasowania rozpoczynające się na początku string
  • re.split ( wzorzec, ciąg, flagi = 0 ): Podziały ciąg do listy według dopasowań do wzorzec , jak metoda str.split (), ale z wyrażeniem regularnym.
  • re.sub ( pattern, repl, string, count = 0, flags = 0 ): Zastąp wystąpienia wzorca w ciągu na repl , jeśli repl jest ciągiem lub wynikiem repl jeśli repl jest funkcją, która przyjmuje pojedynczy obiekt dopasowania jako argument

Parametr flags pozwala należy określić flagi, takie jak re.IGNORECASE , które odpowiednio modyfikują zachowanie twoich wzorców regex.

Podczas pisania wzorców wyrażeń regularnych jako łańcuchów w Pythonie pomocne jest używanie nieprzetworzonych łańcuchów, ponieważ pozwalają one na użycie znaków specjalnych, takich jak „\”, bez konieczności ucieczki przed nimi. Na przykład zamiast:

  • pattern = „\\ bsk (y | ies) \\ b”

Zastosowanie:

  • pattern = r ”\ bsk (y | ies) \ b”
Przykład z ponownej dokumentacji przedstawiający użycie wyrażenia regularnego z dodatnim lookbehind

Pełna dokumentacja re można znaleźć tutaj: https://docs.python.org/3/library/re.html # module-re

Miłego dopasowywania !!

Jak widać, wyrażenia regularne mogą znacznie ułatwić wiele zadań podczas pracy z tekstem. Nawet nauka kilku znaków specjalnych może pozwolić na wiele nowych zastosowań narzędzi Znajdź i zamień. Wiele edytorów tekstu i edytorów tekstu uznało ich użyteczność i umożliwiło obsługę wyrażeń regularnych lub zaimplementowało własne funkcje, aby zapewnić podobną funkcjonalność. Znajomość wyrażeń regularnych jest przydatnym narzędziem w zestawie narzędzi dla każdego pisarza, programisty lub każdego, kto często analizuje tekst.

Paleta AI pomaga firmom z branży FMCG w tworzeniu innowacyjnych produktów. Korzystamy ze sztucznej inteligencji & Machine Learning, aby pomóc firmom FMCG tworzyć produkty korzystne dla konsumentów.