W ciągu ostatniego miesiąca zajmowałem się aplikacjami Skróty i Automator odpowiednio na iOS i macOS. Oba są potęgami, jeśli chodzi o automatyzację w ekosystemie Apple, a począwszy od macOS Monterey tej jesieni, Shortcuts będzie aplikacją do automatyzacji, którą można przejść na wszystkie urządzenia Apple. Dlatego chciałem poświęcić ten artykuł na omówienie bardzo ważnego tematu: Używanie wyrażenia regularnego z aplikacją Skróty.
Chociaż mam pewne doświadczenie w informatyce i programowaniu, jakoś nigdy nie natknąłem się na regex. Może nazwa mnie przestraszyła, a może to był kod, który jest jednym z najmniej czytelnych kodów, jakie kiedykolwiek widziałem.
Niezależnie od przypadku, po omówieniu aplikacji Skróty w ciągu ostatnich kilku miesięcy postanowiłem dokładniej przyjrzeć się wyrażeniom regex. Odkryłem, że wiele ograniczeń, na które natknąłem się ze Skrótami, a także z Automatorem, można przezwyciężyć za pomocą wyrażenia regularnego.
Innymi słowy, nie chodziło o to, że w tych aplikacjach brakowało funkcji, ale o to, że brakowało mi wykształcenia.
Więc w dzisiejszym poście, ty i ja razem poznamy tajniki wyrażenia regularnego. W ten sposób możesz w pełni wykorzystać każdą z tych aplikacji.
Omówimy podstawy wyrażenia regularnego (zaczynając od tego, co to jest), co można z nim zrobić w aplikacji Skróty, niektóre strony internetowe i zasoby, z których możesz skorzystać, jeśli nie masz ochoty uczyć się wyrażeń regularnych, a następnie przejdziemy do podstawowych koncepcji i mechaniki wyrażenia język.
W porządku, zaczynajmy!
Zawartość
-
Co to są wyrażenia regularne (np. regex)?
- Rzeczy, które możesz zrobić z regex
- Jak używać wyrażenia regularnego w aplikacji Skróty?
- Użyj regex101.com, aby przetestować swoje wyrażenia regularne
- Jeśli nie chcesz nauczyć się korzystać z wyrażenia regularnego w aplikacji Skróty, przeczytaj to
-
Regex dla początkujących: Zacznij używać regex ze skrótami
- Czym są smaki regex?
- Strony internetowe i odnośniki, które pomogą Ci rozpocząć naukę wyrażeń regularnych za pomocą skrótów
- Jak przeprowadzić podstawowe wyszukiwanie tekstu za pomocą wyrażenia regularnego ze skrótami
- Dodawanie zmiennych komponentów do wyszukiwań wyrażeń regularnych
- Zakresy mogą poszerzyć Twoje wyszukiwanie
- Jak wykluczyć słowa i znaki z wyszukiwań wyrażeń regularnych za pomocą skrótów
- Symbole wieloznaczne mogą zapewnić więcej opcji wyszukiwania
- Użyj kwantyfikatorów, aby określić długość szukanego tekstu
- Jest jeszcze kilka kwantyfikatorów, o których warto wiedzieć
- Szukaj znaków na początku i na końcu ciągu tekstu
- Przechowuj ciągi tekstowe za pomocą funkcji grupowania wyrażenia regularnego za pomocą skrótów
-
Co teraz?
- Jak byś to złamał?
-
Zacznij używać wyrażenia regularnego ze skrótami, aby przenieść swoją automatyzację na wyższy poziom
- Powiązane posty:
Co to są wyrażenia regularne (np. regex)?
Wyrażenie regularne lub „regex” to fragment kodu, którego można użyć do wyszukania fragmentu tekstu w większym fragmencie tekstu.
Jeśli nie wiesz, fragment tekstu w innym fragmencie tekstu jest nazywany „ciągiem” w programowaniu. Na przykład słowo „zielone” to ciąg znaków z tekstu „Dzisiaj nosiłem zielone spodnie”.
Innymi słowy, wyrażenie regularne to sposób na zlokalizowanie ciągu tekstowego w większym tekście. A ponieważ regex jest napisany w kodzie, możesz go użyć do wykonania dość złożonych operacji.
Na przykład, jeśli chcesz wyszukać słowo „e-mail”, możesz łatwo napisać kod regex, który wyszukuje e-mail.
Jeśli jednak chcesz znaleźć wiadomość e-mail, która znajduje się w akapicie i nie wiesz dokładnie, co to jest, musisz wyszukać ciąg tekstu sformatowany jak wiadomość e-mail. tj. ciąg następujący po „[e-mail chroniony]” format.
Załóżmy teraz, że chcesz nie tylko znaleźć jeden e-mail z akapitu, ale każdy e-mail. Może chcesz szybko skopiować je w inne miejsce, zaktualizować je do nowego formatu lub zastąpić je tak, aby wszystkie mówiły „[e-mail chroniony]“.
W miarę jak będziesz coraz bardziej biegły i doświadczony w posługiwaniu się regexem, będziesz w stanie robić wszystkie te rzeczy i wiele więcej.
Rzeczy, które możesz zrobić z regex
W porządku, więc może przykłady z e-mailem, które właśnie podałem, nie są tak praktyczne. Nie martw się – to daleko od limitu tego, co możesz osiągnąć za pomocą wyrażenia regularnego w aplikacji Skróty.
Ogólnie rzecz biorąc, wszystko, co może zrobić regex, należy do jednej z tych czterech kategorii:
- Znajdź ciąg tekstu w większym fragmencie tekstu (np. wyszukując słowo/ciąg/typ ciągu na stronie tekstu).
- Upewnij się, że ciąg tekstu jest zgodny z żądanym formatem (tj. sprawdź, czy ciąg tekstu jest poprawnie pisany wielkimi literami/porządkiem/interpunkcją).
- Zamień lub wstaw tekst w określonym obszarze fragmentu tekstu.
- Podziel ciąg tekstu w określonych punktach (np. podziel fragment tekstu za każdym razem, gdy jest przecinek).
Poziom głębi, którego możesz użyć do interakcji z każdym z tych rodzajów funkcji i sposób, w jaki możesz je łączyć, sprawiają, że wyrażenie regularne jest niesamowicie potężnym narzędziem do analizowania i manipulowania tekstem.
Jak używać wyrażenia regularnego w aplikacji Skróty?
W porządku, więc mam nadzieję, że teraz masz podstawowe pojęcie o tym, do czego służy wyrażenie regularne. Jest to rodzaj kodu, którego możesz użyć do wyszukiwania tekstu, nawet jeśli nie wiesz dokładnie, czym jest ten tekst.
Więc jak to pomaga w Skrótach? Podobnie jak w przypadku dodawania skryptów do skrótów, jest to sposób na odejście od podstawowych automatyzacji (Napisz do mnie, gdy drzwi frontowe się otworzą) do bardziej zaawansowanych opcji (Automatycznie twórz wydarzenia w kalendarzu dla moich spotkań za każdym razem, gdy dostaję wiadomość e-mail na spotkanie Zoom z pracy).
Możesz użyć wyrażenia regularnego ze skrótami, aby sprawdzić, czy dane wejściowe są poprawne. Na przykład, jeśli utworzysz skrót, który działa tylko z adresami URL, możesz użyć wyrażenia regularnego na początku skrótu, aby upewnić się, że użytkownik uruchamia automatyzację na adresie URL.
Możesz połączyć wyrażenie regularne ze skryptami, aby stworzyć potężne skróty. Na przykład, ten skrót używa wyrażeń regularnych i skryptów, aby zamienić kod kreskowy na adres URL Twojego ulubionego sklepu.
Korzystając z aplikacji Skróty na Macu (dostępna jesienią 2021 r.), możesz używać wyrażenia regularnego do wykonywania operacji wsadowych na fragmencie tekstu. Na przykład możesz skopiować wszystkie e-maile w wybranym tekście jako uporządkowaną listę. Możesz też zastąpić wszystkie nazwy w dokumencie znakami „*”, aby zapewnić prywatność.
Możesz nawet skopiować tekst z jednej aplikacji, ponownie sformatować go, aby pasował do preferencji innej aplikacji, a następnie wkleić go do tej innej aplikacji, a wszystko to za pomocą jednego kliknięcia prawym przyciskiem myszy.
Innymi słowy, regex zapewnia całkowitą kontrolę nad obsługą tekstu za pomocą aplikacji Skróty. Na początku może to nie wydawać się zbyt pomocne, ale teraz, gdy wiesz, że istnieje, na pewno zaczniesz zauważać, ile skrótów można poprawić dzięki tej funkcji. Zauważysz też, że wiele skrótów nie jest nawet możliwych bez wyrażenia regularnego.
Użyj regex101.com, aby przetestować swoje wyrażenia regularne
Gdy zaczniesz używać wyrażenia regularnego ze skrótami, napotkasz punkt frustracji:
Naprawdę trudno jest przetestować twój kod regex. I to nie jest wyjątkowe dla wyrażenia regularnego. Testowanie czegokolwiek za pomocą aplikacji Skróty jest trochę uciążliwe. Jedynym sposobem, aby to zrobić, jest uruchomienie skrótu. Ta metoda nie jest zła, gdy tylko testujesz wbudowane funkcje skrótów.
Ale w przypadku kodu testowego nie pozwala to na sprawdzanie wiersz po wierszu i nie zapewnia wielu informacji zwrotnych.
W tym celu polecam korzystanie z regex101.com. Jest to strona, w której możesz wpisać kod regex w czasie rzeczywistym. Możesz także wpisać tekst do edytora tekstu na tej samej stronie internetowej. Podczas wpisywania każdego z nich zobaczysz, czy Twoje wyrażenie regularne działa, dlaczego działa lub nie, i uzyskasz informacje o znalezionych dopasowaniach.
regex101.com używa innego wyrażenia regex niż ten obsługiwany przez skróty (więcej o tym za minutę), ale jest na tyle blisko, że nie powinieneś napotkać zbyt wielu problemów.
Korzystanie z tego narzędzia jest świetne, ponieważ możesz najpierw napisać tam swoje wyrażenie regularne, a następnie skopiować je do aplikacji Skróty, gdy będzie działać zgodnie z przeznaczeniem.
Jeśli nie chcesz nauczyć się korzystać z wyrażenia regularnego w aplikacji Skróty, przeczytaj to
Rozumiem – nie wszyscy będą chcieli nauczyć się używać wyrażenia regularnego ze skrótami. To umiejętność, a to oznacza, że będzie wymagała czasu i praktyki. To wcale nie jest tak proste, jak pozostałe funkcje przeciągania i upuszczania w aplikacji Skróty.
Bez smutków! Chociaż nie będziesz w stanie uzyskać tak wiele z aplikacji Skróty, jak ktoś, kto poświęci czas na naukę wyrażeń regularnych, nadal masz dostępne opcje. Mianowicie, istnieją witryny i strony internetowe, na których ludzie utworzyli listę fragmentów kodu regex, które można skopiować i wkleić do aplikacji Skróty.
Oto kilka linków, które możesz sprawdzić, jeśli nie chcesz uczyć się wyrażenia regularnego:
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet
- https://www.reddit.com/r/shortcuts/comments/9zo24n/regex_cookbook_for_shortcuts_reusable_regex_to/
- https://www.reddit.com/r/shortcuts/comments/b5labq/match_text_examples_for_the_beginner_a_regex/
- http://www.rexegg.com/regex-cookbook.html
Po prostu przeczytaj te linki i powinieneś być w stanie znaleźć typowe rozwiązania regex do skrótów, które chcesz utworzyć. Nie będzie to opcja wolna od edukacji, ponieważ zrozumienie tego, na co patrzysz, nadal zajmie trochę czasu. Ale jest to o wiele prostsze i idealne rozwiązanie dla kogoś, kto nie ma czasu na regex.
To powiedziawszy, muszę przyznać, że regex nie jest zbyt trudny do nauczenia, zwłaszcza jeśli masz jakieś doświadczenie z kodem powłoki lub programowaniem dla początkujących. Na początku regex brzmiał dla mnie jak bełkot, ale po godzinie czytania artykułów i zabawy z regex101.com mogłem zacząć pisać regex dla moich skrótów.
To tylko znajoma sprawa – po wystarczająco długim spojrzeniu przestanie wyglądać tak dziwnie. Więc jeśli masz czas i jesteś po prostu onieśmielony, nie bądź!
Regex dla początkujących: Zacznij używać regex ze skrótami
Dobra, wystarczy przedmowa! Powinieneś mieć pojęcie o tym, czym jest wyrażenie regularne, co może zrobić, dlaczego powinieneś się go uczyć i mieć wystarczającą ilość informacji, aby zdecydować, czy chcesz się go nauczyć. Teraz przejdziemy do sedna sprawy.
Poniżej jest dużo treści, ale nie martw się! Ten artykuł będzie bardziej przewodnikiem do nauki. Zalecam przeglądanie każdej sekcji, aby uzyskać wyobrażenie o mechanice używanej przez regex. Powinno to również pomóc Ci owinąć głowę wokół tego, jeśli nadal nie wiesz, czym jest wyrażenie regularne.
Kiedy już przejrzysz, polecam otworzyć regex101.com i pobawić się każdym z narzędzi w każdej sekcji poniżej. Pomoże ci to zobaczyć, jak koncepcje wyglądają w praktyce, a także poprawi twoją pamięć. Gdy już to zrobisz, możesz po prostu potraktować ten artykuł jako punkt odniesienia – coś, do czego możesz wrócić, gdy zapomnisz o kawałkach wyrażeń regularnych.
Dobra chodźmy!
Czym są smaki regex?
Najpierw przyjrzymy się smakom regex. Nie martw się – nie wpłynie to na codzienne korzystanie z wyrażenia regularnego ze skrótami. To po prostu coś, o czym należy pamiętać, zanim zaczniesz.
Istnieją różne wersje wyrażenia regularnego, które są znane jako „smaki”. Te różne wersje są nadal bardzo podobne. Jeśli możesz nauczyć się czytać i pisać jeden smak, powinieneś być w stanie przeczytać każdy z nich. Będą tylko niewielkie różnice w sposobie formatowania kodu regex.
W programowaniu te specyfikacje formatowania są znane jako „składnia”. To tylko sposób, w jaki musisz napisać swój kod, aby ten kod został zrozumiany przez aplikację, w której go piszesz.
Oto dlaczego składnia ma znaczenie
„Hej przyjacielu, jak ci mija dzień?”
“, idzie przyjaciel? Twój dzień Hej, jak”
Oba zdania mają te same słowa, znaki i spacje. Jednak tylko jeden ma sens, a to dlatego, że jest zgodny z konwencjonalną składnią.
W kodowaniu jeden język programowania może rozumieć pierwszą wersję, ale nie drugą. Jednak dla innego języka programowania drugi może mieć sens, podczas gdy pierwszy wygląda jak bełkot. Jednak dla kogoś, kto mówi po angielsku, prawdopodobnie zrozumiesz intencje obu linijek, nawet jeśli zrozumienie ich znaczenia zajmie trochę pracy.
Tak (tak jakby) wyglądają różne smaki wyrażenia regularnego. Wszystkie będą wyglądać trochę inaczej i trochę podobnie do ciebie. Musisz jednak używać odpowiedniego smaku dla aplikacji, z której korzystasz, w przeciwnym razie aplikacja nie będzie miała pojęcia, co napisałeś.
Aplikacja Skróty rozumie smak wyrażenia regularnego ICU, więc jest to smak, którego będziesz chciał użyć. Witryna regex101.com ma kilka różnych smaków, które możesz wybrać po lewej stronie. Używa jednak PCRE, który jest dość podobny do ICU.
Ważne jest, aby wiedzieć, że istnieją różne smaki wyrażenia regularnego, ponieważ bez wątpienia natkniesz się na różne smaki w Internecie. Jeśli znajdziesz fragment wyrażenia regularnego, który chcesz ukraść, ale nie możesz go uruchomić za pomocą skrótów lub po prostu nie wygląda dobrze, sprawdź, w jakim smaku jest napisane!
Strony internetowe i odnośniki, które pomogą Ci rozpocząć naukę wyrażeń regularnych za pomocą skrótów
Kolejną rzeczą, którą chcę omówić, zanim zaczniemy odkrywać rzeczywistą mechanikę pisania wyrażeń regularnych, są zasoby. W żadnym wypadku nie twierdzę, że ten post jest wyczerpującym źródłem na temat uczenia się regexów. Ma to być po prostu pomocny punkt wyjścia dla tych, którzy chcą używać wyrażenia regularnego ze skrótami.
Jeśli chcesz zagłębić się w wyrażenia regularne lub uważasz, że ten artykuł nie zapewnia potrzebnej pomocy, możesz zapoznać się z niektórymi z tych artykułów, przewodników i narzędzi:
- https://regex101.com – Witryna, która umożliwia testowanie kodu regex w czasie rzeczywistym.
- https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Ściągawka na wypadek, gdy zapomnisz, co robi każda postać
- http://www.rexegg.com – Ta strona internetowa jest obszernym źródłem informacji o wszystkim, co musisz wiedzieć o wyrażeniach regularnych. Sprawdź to, jeśli chcesz nauczyć się wyrażeń regularnych.
- https://scottwillsey.com/blog/ios/regex1/ – To czteroczęściowa seria blogów na temat używania regexów ze skrótami. Przyjmuję zupełnie inne podejście niż ten przewodnik, więc powinien on stanowić miłą serię towarzyszącą temu artykułowi.
- Stack Overflow i Reddit to dobre strony internetowe, w których można dzielić się pytaniami dotyczącymi regexów i postępami, aby uzyskać porady i odpowiedzi.
Zasoby te różnią się od tych wymienionych w Jeśli nie chcesz uczyć się korzystania z wyrażenia regularnego w aplikacji Skróty sekcji, ponieważ wszystkie one będą wymagać od Ciebie faktycznego rozpoczęcia nauki wyrażeń regularnych. Są bardziej wszechstronne, podczas gdy pozostałe są tylko punktami odniesienia.
Jak przeprowadzić podstawowe wyszukiwanie tekstu za pomocą wyrażenia regularnego ze skrótami
W porządku! Doszliśmy teraz do punktu, na który wszyscy czekali: poznamy podstawy używania wyrażenia regularnego ze skrótami.
Zacznijmy od wyszukiwania podstawowego, ponieważ jest to najprostsza rzecz, jaką możesz zrobić za pomocą wyrażenia regularnego. Jak wspomniano wcześniej, polecam otworzyć regex101.com w innej karcie, aby można było śledzić dalej.
W najprostszym przypadku wyrażenie regularne będzie szukać (lub mecz) cokolwiek w nim wpiszesz. Na przykład, gdybym miał napisać W porządku
jako mój kod regex, znalazłby każde wystąpienie słowa „W porządku” w tym przewodniku.
Wielkość liter, odstępy i interpunkcja mają znaczenie. Oznacza to, że W porządku
, w porządku
, W porządku!
, oraz W porządku ,
wszystkie przyniosą różne wyniki.
I to wszystko! Za każdym razem, gdy wpiszesz coś w wyszukiwaniu wyrażeń regularnych bez użycia znaków specjalnych, wyrażenie regularne dopasuje wszystko, co dokładnie pasuje do tego, co wpisałeś.
Jest jeden haczyk! Niektóre znaki na klawiaturze są również specjalnymi wyrażeniami regularnymi. Oznacza to, że pełnią jakąś funkcję w kodzie regex.
ten ?
symbol jest jednym z takich znaków. Jest używany w kodzie regex jako kwantyfikator. Więc jeśli spróbujesz wyszukać „W porządku?” wpisując W porządku?
jako Twój kod regex, nie dostaniesz tego, czego chcesz.
Aby to naprawić, musisz określić, że chcesz użyć „?” jako ciąg, a nie jako znak specjalny. Aby to zrobić dla tej lub dowolnej innej postaci, po prostu dodaj \
symbol tuż przed znakiem, którego specjalne właściwości chcesz unieważnić.
Więc jeśli chcesz wyszukać „W porządku?” z regex, twój kod będzie wyglądał tak:
W porządku\?
Jeśli nie masz pewności, czy określony znak jest traktowany jako znak specjalny przez wyrażenie regularne, możesz sprawdzić ta ściągawka dla wszystkich znaków specjalnych w wyrażeniu regularnym.
Wyszukaj więcej niż jedno słowo, używając znaku „lub”
Innym ważnym elementem wyszukiwania ciągów z wyrażeniem regularnym jest użycie funkcji „lub”. Jest to znak, który możesz umieścić między dwoma słowami/znakami, aby powiedzieć „Dopasuj to lub to”.
Na przykład, jeśli chcę wyszukać w tekście słowa „w porządku” i „w porządku”, użyję |
postać. Tak jak:
W porządku|w porządku
Jeśli masz trudności ze znalezieniem |
znak, przytrzymaj Zmiana klawisz w dół i naciśnij \
klucz. Jest nad powrót klawisz na większości klawiatur.
Dodawanie zmiennych komponentów do wyszukiwań wyrażeń regularnych
Ok, więc teraz, gdy wiesz, jak wygląda neutralne wyrażenie regularne, nadszedł czas, aby wybrać swój pierwszy znak specjalny. To byłyby nawiasy kwadratowe, czyli te rzeczy []
.
Cokolwiek umieścisz w tych nawiasach, będzie uważane za zmienny składnik wyszukiwania wyrażenia regularnego. Możesz umieścić tyle znaków w nawiasach, ile chcesz, ale tylko jeden będzie ważny na mecz.
W porządku, to brzmi trochę skomplikowanie, ale tak nie jest! Oto jak to wygląda w praktyce:
-
[W porządku
dopasuje tylko słowo „W porządku”. Trochę bez sensu. -
[AB]w porządku
będzie pasować zarówno do „W porządku”, jak i „Blright”. -
Alr[iouxyz]ght
dopasuje „W porządku”, „Alroght”, „Alrught”, „Alrxght” i tak dalej.
Możesz łączyć znaki w nawiasach, a także używać wielu nawiasów w tym samym wierszu wyrażenia regularnego. [AB]r[i1]gh[tuvwxyz]
jest prawidłowym fragmentem wyrażenia regularnego. Miejmy jednak nadzieję, że nie wygląda to tak chaotycznie, jak kilka minut temu!
Zakresy mogą poszerzyć Twoje wyszukiwanie
Następny fragment wyrażenia regularnego, który przyda się w przypadku skrótów, to zakres. Zakresy pozwalają określić zakres znaków, które akceptujesz.
W poprzedniej sekcji mogłeś zauważyć, że moje nawiasy zawierały wiele kolejnych liter. Najdłuższy był [tuvwxyz]
. Te litery pojawiają się w alfabecie w tej samej kolejności, tuż obok siebie.
Oznacza to, że mógłbym użyć zakresu zamiast wpisywać je. Wyglądałoby to tak:
W porządku[t-z]
Ten fragment kodu regex zrobi to samo, co W porządku[tuvwxyz]
. Jest po prostu ładniejszy i łatwiejszy do pisania.
Możesz zastąpić ten sam zakres przez [a-z]
jeśli chcesz, aby akceptował każdą małą literę z alfabetu. Lub możesz użyć [0-9]
jeśli chcesz zaakceptować dowolny numer jednocyfrowy.
Możesz także łączyć zakresy w tym samym nawiasie. Na przykład to Alr[i-ux-z]ght
zaakceptuje „W porządku”, „Alroght”, „Alrxght” i „Alryght”, ale nie zaakceptuje „Alraght” ani „Alrvght”.
Nawiasem mówiąc, istnieją inne odmiany słowa „W porządku”, które ten kod zaakceptuje, a także wiele innych, które nie. To tylko krótki wybór, aby wszystko było, cóż, krótkie.
Jeśli masz trudności ze zrozumieniem, co [i-ux-z]
oznacza, że może pomóc zobaczyć to napisane w ten sposób:
[i-u, x-z]
To nie jest poprawna składnia wyrażeń regularnych – nie powinieneś używać przecinka do oddzielania zakresów. Ale miejmy nadzieję, że to pomoże nabrać większego sensu!
Nie potrzebujesz przecinków w wyrażeniu regularnym, aby oddzielić zakresy i nie musisz umieszczać zakresów tuż obok siebie. Możesz to zmienić na [i-uabcx-z]
. Zaakceptowałoby to te same zakresy co poprzednio plus znaki „a”, „b” i „c”.
Jak wykluczyć słowa i znaki z wyszukiwań wyrażeń regularnych za pomocą skrótów
Ok, więc teraz dokądś zmierzamy! Jeśli do tej pory śledziłeś ten artykuł, powinieneś być w stanie spojrzeć na poniższy kod i zrozumieć, do czego on pasuje:
Ap[p-r]le[Tt]ool[BbLF]ox
Jeśli możesz to przeczytać, to wiesz, że ten fragment kodu regex zawiera dużo możliwych odmian słowa „AppleToolBox”. A co, jeśli chcielibyśmy zmniejszyć liczbę wariacji, które akceptuje bez zmiany naszego zakresu?
W tym miejscu pojawia się znak „nie”. To wygląda tak: ^
. Jeśli masz trudności ze znalezieniem go na klawiaturze (tak jak ja), przytrzymaj Zmiana i naciśnij 6 klawisz na klawiaturze.
Aby użyć ^
znak, umieść go na początku znaku, który chcesz wykluczyć.
Jest w tym jakiś haczyk! ten ^
znak nie działa poza funkcją regex. Nie możesz po prostu umieścić go przed literą „A”, aby wykluczyć tę literę z wyszukiwania. Kod regex ^A
wyszuka po prostu duże „A”.
Zamiast tego połącz go z nawiasami i innymi znakami specjalnymi regex.
Na przykład, gdybym chciał wyszukać dowolne wystąpienie słowa „W porządku”, które nie zaczyna się na literę „A”, użyłbym kodu [^A]w porządku
.
Możesz go nawet łączyć z gamami! Po prostu umieść go na początku swojego nawiasu, a wszystko w tym nawiasie, w tym zakresy, zostanie wykluczone z wyszukiwania. Tak jak:
Co zrobić, jeśli chcesz wykluczyć określone słowo z wyszukiwania?
Trudno mi było znaleźć te informacje. Jednak użytkownik Stack Overflow miał rozwiązanie i wygląda to tak:
^(?!(słowo)$).+$
Wystarczy wymienić słowo
z dowolnym słowem, które chcesz wykluczyć z wyszukiwania. Tak jak:
Możesz przeczytać ten post o przepełnieniu stosu tutaj jeśli chcesz dowiedzieć się więcej o tym konkretnym przypadku użycia.
Symbole wieloznaczne mogą zapewnić więcej opcji wyszukiwania
To prowadzi nas do symboli wieloznacznych. Znak wieloznaczny, czyli kropka .
, służy do reprezentowania dowolnego pojedynczego znaku, bez baru. Jeśli po prostu wpiszesz .
jako twój kod regex ze skrótami, zwróci każdy znak w treści tekstu jako indywidualne dopasowanie.
Oczywiście nie polecałbym go używać do tego celu! Zamiast tego polecam używać go zamiast pojedynczego znaku w słowie. Na przykład, W porządku
dopasuje „W porządku”, „Alrxght”, „Alr
I to prawie wszystko! Symbol wieloznaczny jest dość łatwy do zrozumienia. Pasuje do wszystkiego! To sprawia, że jest to pomocne przy znajdowaniu ciągów pasujących do określonego formatu, które mają unikalne znaki.
Na przykład e-maile będą wyglądać podobnie, choć nie będą takie same. Symbol wieloznaczny może pomóc Ci połączyć elementy, o których wiesz, że tam będą (takie jak „.com” i „@”) ze znakami, których nie znasz (np. „my_email567”, iCloud lub „Gmail”).
Innym ciekawym przypadkiem użycia jest użycie .
znak, aby znaleźć ciągi o określonej długości.
Na przykład, jeśli chcę znaleźć każdy czteroznakowy ciąg w tekście, mogę użyć ...
z miejscem po obu stronach.
A oto wszystkie siedmioznakowe ciągi w tym samym tekście:
Pamiętaj, że nie jest to idealna metoda wyszukiwania ciągów o określonej długości. Jak widać w powyższych przykładach, dopasowywane są niektóre ciągi, które nie powinny być, a niektóre, które powinny zostać zignorowane. Warto pamiętać, że możesz użyć .
znak do liczenia znaków.
Pamiętaj też, że .
to znak specjalny w wyrażeniu regularnym. Oznacza to, że musisz dodać \
przed nim, jeśli chcesz wyszukać kropki. Oznacza to, że będziesz musiał użyć W porządku\.
aby dopasować „W porządku”.
Użyj kwantyfikatorów, aby określić długość szukanego tekstu
W porządku, więc możesz technicznie użyć .
znak, aby znaleźć ciąg, który zajmuje określoną liczbę znaków. Jednak przez większość czasu będziesz chciał być bardziej szczegółowy.
I tu wkraczają kwantyfikatory. Kwantyfikatory pozwalają określić długość ciągu, którego szukasz, używając wyrażenia regularnego ze skrótami.
Załóżmy na przykład, że chcesz znaleźć dowolne słowo składające się z trzech liter. Aby to określić, będziesz chciał użyć tych nawiasów:
{}
Kiedy umieścisz te nawiasy po tych []
nawiasy, określasz, że chcesz mieć ciąg pasujący do liczby znaków wewnątrz tego {}
i zakres znaków określony w tym []
.
Jestem pewien, że teraz nie ma to większego sensu, więc spójrzmy na przykład!
Załóżmy, że chcesz znaleźć wszystkie lata wymienione w tekście. Ponieważ rok składa się z czterech liczb (oczywiście nie co roku od zawsze, po prostu śledź mnie tutaj), możesz użyć tego kodu, aby dopasować lata w tym tekście:
[0-9]{4}
Ten kod mówi, że chcemy ciągu składającego się ze znaków od 0 do 9, który ma dokładnie cztery znaki. Możesz zobaczyć, jak lokalizuje ten konkretny ciąg na poniższym zrzucie ekranu:
Powinienem zauważyć, że są pewne problemy z tym kodem regex, a to dlatego, że nie uwzględnia spacji ani znaków interpunkcyjnych. Jeśli więc kod znajdzie liczbę o długości większej niż cztery znaki, np. „12345678”, znajdzie ciąg „1234” i ciąg „5678”.
Aby rozwiązać ten problem, warto dodać spację na początku kodu i nawias kwadratowy po znaku {4}
który zawiera kolejną spację, kropkę, znak zapytania, przecinek i wykrzyknik. W ten sposób przeoczy długie ciągi liczb bez brakujących ciągów liczb, które mają na końcu znaki interpunkcyjne zamiast spacji.
Możesz również użyć kwantyfikatorów do określenia więcej niż jednej długości łańcucha. Na przykład, może chcę znaleźć ciąg o długości czterech znaków, ale także siedmiu i jedenastu. Oto, jak by to wyglądało:
[a-z]{4,7,11}
Jest jeszcze kilka kwantyfikatorów, o których warto wiedzieć
Ok, więc jest jeszcze więcej kwantyfikatorów! Te ostatnie kilka kwantyfikatorów służy do określenia długości łańcucha bez zbytniej precyzji.
Załóżmy na przykład, że chcesz znaleźć ciąg o dowolnej długości, który może pasować do wyrażenia regularnego. Jak imię! Nazwy (w krajach zachodnich) zaczynają się od jednej wielkiej litery i kończą losową liczbą małych liter, po których następuje spacja. Aby znaleźć imię, napisałbyś następujący kod:
[A-Z][a-z]*
[A-Z]
określa, że pierwszy znak ciągu powinien być wielką literą. [a-z]*
określa, że reszta ciągu powinna składać się z małych liter, ale nie ma znaczenia, ile liter nastąpi. Spacja na końcu oznacza, że dopasowanie zakończy się, gdy znajdzie spację na końcu małych liter.
Złota kombinacja w wyrażeniu regularnym to .*
. Oznacza to, że dopasuj dowolny znak w nieskończoność. Innymi słowy, dopasuje cały tekst jako jeden element.
Następnym kwantyfikatorem, który musisz znać, jest +
. Ten jest jak *
z wyjątkiem tego, że nie dopasuje ciągu znaków z zerem. *
dopasuje dowolną długość łańcucha, w tym łańcuchy, które nie mają długości. +
, z drugiej strony, potrzebuje ciągu zawierającego co najmniej jeden znak lub więcej.
Wreszcie jest ?
kwantyfikator. To dziwne. Określa, że ciąg ma długość zero znaków lub jeden znak. To wszystko – albo nic, albo tylko jeden. Więc jeśli użyjesz kodu [a-z]?
ze spacją na początku i na końcu, będzie szukać pojedynczych liter w tekście.
Szukaj znaków na początku i na końcu ciągu tekstu
Zbliżamy się do końca naszego przewodnika o używaniu wyrażenia regularnego ze skrótami! Istnieją jeszcze tylko dwa rodzaje kodu regex, których będziesz używać ze skrótami.
Pierwszy to znaki, które pozwalają dopasować ciągi na podstawie tego, jak się zaczynają i/lub kończą.
Jeśli nie ma go w nawiasach, ^
rola postaci zmienia się ze znaczenia „wyklucz” na „zaczyna się od”. Określa, że ciąg powinien zaczynać się od czegokolwiek chcesz. Na przykład, jeśli piszesz ^A
, które pasowałyby do litery „A” w ciągach „W porządku”, „Jabłko” i „A”.
Jednak nie pasuje do całego słowa. W tym celu musiałbyś to zmienić na ^A[A-Za-z]*
. Będzie to pasować do pierwszego słowa akapitu/ciągu, o ile to słowo zaczyna się od dużej litery „A”.
Na marginesie możesz napisać [A-Za-z]
jak [A–z]
. To oznacza to samo, po prostu uważam, że pierwszy jest nieco jaśniejszy, gdy się uczysz.
Aby określić koniec ciągu, będziesz chciał użyć $
postać. Działa tak samo jak ^
postać. Jedyną różnicą jest to, że piszesz go na końcu nawiasu/łańcucha zamiast na początku.
Na przykład, jeśli chcesz znaleźć ciągi / akapity, które kończą się na „le”, użyjesz kodu [A-z]*le$
. To będzie pasować do „Tabela”, „jabłko” i „zdolny”, o ile znajdują się na końcu ciągu lub akapitu.
Regex odmówi nawet tego dopasowania, jeśli na końcu ciągu znajduje się spacja lub znak interpunkcyjny. "Tabela." nie zostaną dopasowane przez ten kod.
Aby to naprawić, możesz uwzględnić interpunkcję. Ten kod uwzględnia różne formy interpunkcji i odstępów, które mogą wystąpić na końcu ciągu, w tym znak interpunkcyjny, po którym następuje spacja:
[A-z]*(le[\.\?!, ]?[ ]?)$
Ten kod będzie pasował do „Able”, „table.”, „stabilny” i „zdolny? “.
Przechowuj ciągi tekstowe za pomocą funkcji grupowania wyrażenia regularnego za pomocą skrótów
W porządku! Dotarłeś do końca naszego przewodnika AppleToolBox na temat używania wyrażenia regularnego ze skrótami. Pozostała jeszcze tylko jedna funkcja regex do nauczenia, a jest to grupowanie.
Grupowanie jest prawdopodobnie najważniejszą cechą wyrażeń regularnych, ponieważ umożliwia robienie rzeczy z napisanym przez Ciebie kodem wyrażeń regularnych. Bez niego wyrażenie regularne to tylko funkcja wyszukiwania. Może tylko powiedzieć, czy ciąg istnieje w większym tekście, tj. Zwróci „prawda” lub „fałsz”.
Jednak dzięki grupowaniu możesz przechowywać wyniki swojego kodu regex. A to oznacza, że możesz kopiować dopasowania, przechowywać je w zmiennych, zastępować je innym tekstem, modyfikować ich formatowanie i wszystko inne, co chcesz zrobić z wyrażeniem regularnym.
Na szczęście grupowanie jest bardzo proste! Po prostu umieść to, co chcesz zgrupować w nawiasach ()
. Cokolwiek umieścisz w nawiasach, będzie traktowane jako grupa.
Jeśli umieścisz cały wiersz kodu regex w nawiasach, na przykład (.*@.*\..{3})
, ta grupa zostanie zapamiętana przez twój kod, co pozwoli na przywołanie jej później.
Ważne jest, aby korzystać z grup tylko wtedy, gdy jest to konieczne. Ponieważ są przechowywane w pamięci, mogą powodować spadek wydajności kodu. Zachowaj grupy, gdy są potrzebne!
Możesz też używać grup do organizacji
Możesz także użyć grup, aby uporządkować swój kod regex za pomocą skrótów. Kiedy to zrobisz, grupa w nawiasach niekoniecznie zostanie zapamiętana.
Na przykład powiedz, że chcę dopasować słowo „Hello”, z wyjątkiem tego, że nie obchodzi mnie, jaka jest ostatnia litera. Może to być dowolna mała lub wielka litera, a nawet cyfra. „Hell3838djdjajaksks” i „Hello” powinny być liczone jako mecze. Z drugiej strony „piekło” nie powinno być liczone.
Aby to zadziałało, piszę kod Piekło[A-z]|[0-9]+
. Ale oto wynik, który otrzymuję:
Powodem, dla którego nie pasuje do tego, czego się spodziewałem, jest to, że +
jest stosowany tylko do [0-9]
nawias. Muszę to zastosować do obu nawiasów.
Dodatkowo ten kod mówi, że chcę albo Piekło[A-z]
lub[0-9]
. Czyli dopasowuje słowa, które zaczynają się od „piekło” i kończą literą, lub szuka dowolnych ciągów liczb. To, czego naprawdę potrzebuję, to dopasowanie wystąpień słowa „piekło”, które kończą się literą lub cyfrą.
Aby to naprawić, mogę użyć grupy i przepisać kod jako Piekło([A-z]|[0-9])+
. Teraz szuka słowa „Piekło”, po którym następuje dowolna litera lub cyfra. A ponieważ +
jest stosowany do obu nawiasów, może to być dowolna kombinacja liter i cyfr, o ile występuje co najmniej jedna litera lub cyfra.
Jak widać na poniższym zrzucie ekranu, ta grupa rozwiązuje mój problem bez konieczności przechowywania informacji w tej grupie:
Co teraz?
I to wszystko! To prawie wszystko, co możesz chcieć wiedzieć o używaniu wyrażenia regularnego ze skrótami. Mamy nadzieję, że czujesz się wystarczająco pewnie, aby zacząć eksperymentować z wyrażeniem regularnym, nawet jeśli na początku nie miało to dla ciebie sensu.
Teraz, gdy znasz już podstawy wyrażenia regularnego, możesz zacząć używać go w swoich skrótach! Skróty akceptują wprowadzanie wyrażenia regularnego w następujących akcjach:
- Dopasuj tekst
- Zamień tekst
Korzystając z tych dwóch akcji skrótów, możesz wstawić wyrażenie regularne do swoich skrótów.
Połącz to z możliwościami automatyzacji skrótów, a otrzymasz całkiem potężne narzędzie do swojej dyspozycji.
Możesz użyć wyrażenia regularnego, aby ułatwić formatowanie tekstu w Skrótach, aby pobrać informacje z e-maili, tekstów, stron internetowych, pliki i wydarzenia w kalendarzu, utwórz tekst w określonym formacie, sprawdź, czy dane wejściowe zostały wprowadzone poprawnie, oraz jeszcze.
Załóżmy na przykład, że chcesz dopasować e-maile. Może potrzebujesz sprawdzić, czy ciąg tekstu jest wiadomością e-mail, a może chcesz pobrać wiadomość e-mail z treści tekstu.
Jak byś to złamał?
Cóż, wiesz, że podstawową strukturą wiadomości e-mail będzie kombinacja liter, cyfr i znaków, po której następuje symbol „@”, a następnie po której następuje nazwa strony internetowej, takiej jak Gmail lub iCloud, po której następuje „.com”, „.org” lub inny rodzaj trzyznakowego najwyższego poziomu domena.
Aby napisać to w regex, musisz określić, że chcesz mieć ciąg o długości co najmniej jednego znaku, po którym następuje natychmiast przez symbol „@”, następnie kolejny ciąg co najmniej jednego znaku, po którym następuje „.”, a następnie ciąg trzech postacie. Wyglądałoby to tak:
[e-mail chroniony]+\..{3}
Jeśli wkleisz to do Dopasuj tekst lub Zamień tekst czynności w Skrótach, będziesz mieć automatyzację, która może znajdować, przechowywać i manipulować adresem e-mail.
Możesz użyć tego rodzaju rozwiązywania problemów, aby wymyślić własne rozwiązania regex lub znaleźć takie, które inni stworzyli online!
Zacznij używać wyrażenia regularnego ze skrótami, aby przenieść swoją automatyzację na wyższy poziom
I to, przyjaciele, to jest naprawdę. Mam nadzieję, że podobało Ci się śledzenie tego artykułu! To jeden z bardziej ambitnych utworów, jakie kiedykolwiek napisałem dla AppleToolBox. Musiałem nauczyć się regexa, aby go napisać i mam nadzieję, że robiąc to, mogłem pomóc Ci się go nauczyć.
Używanie wyrażenia regularnego ze skrótami nie różni się niczym od uczenia się, jak robić cokolwiek innego na smartfonie lub komputerze. Poświęć trochę czasu i cierpliwości, a w końcu dotrzesz.
Aby uzyskać więcej przewodników, samouczków i wiadomości na temat wszystkich rzeczy związanych z Apple, zapoznaj się z resztą blog AppleToolBox.
W porządku [A-Z][a-z]+
, do zobaczenia następnym razem!