Як почати використовувати регулярні вирази за допомогою програми Ярлики

click fraud protection

Протягом останнього місяця я розповідав про програми «Ярлики» та «Автоматизатор» для iOS та macOS відповідно. Обидва є потужними, коли справа доходить до автоматизації в екосистемі Apple, і, починаючи з macOS Monterey цієї осені, Shortcuts стане основним додатком для автоматизації на всіх пристроях Apple. Ось чому я хотів посвятити цю статтю обговоренню дуже потужної теми: використання регулярного виразу з програмою «Ярлики».

Хоча я маю певний досвід в галузі інформатики та програмування, я чомусь ніколи не стикався з регулярними виразами. Можливо, назва мене відлякувала, а може, це був код, який є одним із найменш читабельних кодів, які я коли-небудь бачив.

У будь-якому випадку, я вирішив детальніше розглянути регулярні вирази, охопивши програму «Ярлики» за останні кілька місяців. І я виявив, що багато обмежень, з якими я стикався з ярликами, а також з Automator, можна подолати за допомогою регулярного виразу.

Іншими словами, справа не в тому, що цим додаткам бракувало функцій, а в тому, що мені бракувало освіти.

Тож у сьогоднішній публікації ми з вами разом вивчатимемо тонкощі регулярного виразу. Таким чином, ви зможете отримати максимум від кожного з цих додатків.

Ми розглянемо основи регулярного виразу (починаючи з того, що це таке), що ви можете робити з ним у програмі Ярлики, на деяких веб-сайтах та ресурси, які ви можете використовувати, якщо вам не хочеться вивчати регулярні вирази самостійно, а потім ми розглянемо основні концепції та механіку регулярного виразу мова.

Добре, почнемо!

Зміст

  • Що таке регулярні вирази (тобто регулярні вирази)?
    • Що можна робити за допомогою регулярного виразу
  • Як ви можете використовувати регулярний вираз із програмою Ярлики?
  • Використовуйте regex101.com, щоб перевірити свої регулярні вирази
  • Якщо ви не хочете навчитися використовувати регулярний вираз із програмою «Ярлики», прочитайте це
  • Регулярний вираз для початківців: почніть використовувати регулярний вираз за допомогою ярликів
    • Що таке регулярні вирази?
    • Веб-сайти та посилання, які допоможуть вам почати вивчати регулярні вирази за допомогою ярликів
    • Як виконати базовий текстовий пошук за допомогою регулярного виразу з ярликами
    • Додавання змінних компонентів у пошук регулярного виразу
    • Діапазони можуть розширити пошук
    • Як виключити слова та символи з пошуку регулярного виразу за допомогою ярликів
    • Підстановкові знаки можуть надати вам більше варіантів пошуку
    • Використовуйте квантифікатори, щоб визначити довжину тексту, який ви шукаєте
    • Є ще кілька кількісних показників, про які вам потрібно знати
    • Пошук символів на початку і в кінці рядка тексту
    • Зберігайте текстові рядки за допомогою функції групування регулярного виразу за допомогою ярликів
  • Що тепер?
    • Як би ти розбив це?
  • Почніть використовувати регулярні вирази з ярликами, щоб перейти на новий рівень автоматизації
    • Схожі повідомлення:

Що таке регулярні вирази (тобто регулярні вирази)?

Регулярний вираз або «регулярний вираз» — це фрагмент коду, який можна використовувати для пошуку фрагмента тексту всередині більшого фрагмента тексту.

Якщо ви не знаєте, фрагмент тексту в іншому фрагменті тексту в програмуванні називається «рядком». Наприклад, слово «зелений» — це рядок символів із тексту «Я сьогодні носив зелені штани».

Інакше кажучи, регулярний вираз — це спосіб знайти рядок тексту в більшому об’ємі тексту. І оскільки регулярний вираз написаний у коді, ви можете використовувати його для виконання деяких досить складних операцій.

Наприклад, якщо ви хочете шукати слово «email», ви можете легко написати код регулярного виразу, який шукає електронну пошту.

Якщо ви хочете знайти електронний лист, який знаходиться всередині абзацу, і не знаєте точно, що це за електронний лист, вам потрібно буде знайти рядок тексту, відформатований як електронний лист. тобто рядок, який слідує за «[електронна пошта захищена]” формат.

Тепер, припустимо, ви хочете не тільки знайти один лист з абзацу, але й кожен електронна пошта. Можливо, ви хочете швидко скопіювати їх кудись в іншому місці, оновити їх до нового формату або замінити так, щоб усі вони казали «[електронна пошта захищена]“.

У міру того, як ви станете дедалі більше володіти регулярними виразами, ви зможете робити все це та багато іншого.

Що можна робити за допомогою регулярного виразу

Гаразд, можливо, приклади з електронною поштою, які я щойно надав, не такі практичні. Не хвилюйтеся – це далеко від межі того, що ви можете досягти за допомогою регулярного виразу за допомогою програми Ярлики.

Загалом, все, що може робити регулярний вираз, відноситься до однієї з цих чотирьох категорій:

  1. Знайдіть рядок тексту в більшому фрагменті тексту (тобто шукайте слово/рядок/тип рядка на сторінці тексту).
  2. Переконайтеся, що рядок тексту відповідає бажаному формату (тобто, переконайтеся, що рядок тексту написано з великої літери/впорядковано/розділено правильно).
  3. Замініть або вставте текст у певну область фрагмента тексту.
  4. Розділіть рядок тексту на певні місця (наприклад, розділіть фрагмент тексту щоразу, коли є кома).

Рівень глибини, який ви можете використовувати для взаємодії з кожним із цих видів функцій, і те, як ви можете їх комбінувати, робить регулярні вирази неймовірно потужним інструментом для аналізу та маніпулювання текстом.

Як ви можете використовувати регулярний вираз із програмою Ярлики?

Гаразд, тепер, сподіваюся, ви маєте основне уявлення про те, для чого використовується регулярний вираз. Це тип коду, який ви можете використовувати для пошуку тексту, навіть якщо ви точно не знаєте, що це за текст.

Тож як це допоможе вам у ярликах? Подібно до додавання сценаріїв до ваших ярликів, це спосіб перейти від базової автоматизації (Напишіть мені, коли вхідні двері відчиняться) до більш розширених параметрів (Автоматично створювати подію в календарі для моїх зустрічей щоразу, коли я отримую електронний лист про зустріч Zoom з роботи).

Ви можете використовувати регулярний вираз із ярликами, щоб перевірити правильність введення. Наприклад, якщо ви створюєте ярлик, який працює лише з URL-адресами, ви можете використовувати регулярний вираз на початку ярлика, щоб переконатися, що користувач виконує автоматизацію для URL-адреси.

Ви можете комбінувати регулярні вирази зі сценаріями, щоб створити потужні ярлики. Наприклад, цей ярлик використовує регулярні вирази та сценарії, щоб перетворити штрих-код на URL-адресу вашого улюбленого магазину.

Використовуючи програму «Ярлики» на Mac (осінь 2021 року), ви можете використовувати регулярний вираз для виконання групових дій над фрагментом тексту. Наприклад, ви можете скопіювати всі електронні листи у виділеному тексті як упорядкований список. Або ви можете замінити всі імена в документі символами «*», щоб забезпечити конфіденційність.

Ви навіть можете скопіювати фрагмент тексту з однієї програми, переформатувати його відповідно до налаштувань іншої програми, а потім вставити в іншу програму, і все це одним клацанням правою кнопкою миші.

Іншими словами, регулярний вираз дає вам повний контроль над обробкою тексту за допомогою програми Ярлики. Спочатку це може здатися не дуже корисним, але тепер, коли ви знаєте, що воно існує, ви напевно почнете помічати, скільки ярликів можна покращити за допомогою цієї функції. І ви також помітите, що багато ярликів навіть неможливі без регулярного виразу.

Використовуйте regex101.com, щоб перевірити свої регулярні вирази

Як тільки ви почнете використовувати регулярні вирази з ярликами, ви зіткнетеся з моментом розчарування:

Перевірити код регулярного виразу дійсно важко. І це не є унікальним для регулярного виразу. Тестувати будь-що за допомогою програми «Ярлики» – це проблема. Єдиний спосіб зробити це – запустити ярлик. Цей метод непоганий, коли ви просто тестуєте вбудовані функції ярликів.

Але для тестування коду це не дозволяє перевіряти рядок за рядком і не пропонує багато зворотного зв’язку.

Для цього я б рекомендував використовувати regex101.com. Це сайт, на якому ви можете вводити код регулярного виразу в режимі реального часу. Ви також можете ввести текст у текстовий редактор на тій же веб-сторінці. Коли ви вводите кожен, ви побачите, чи працює ваш регулярний вираз, чому він працює чи ні, і отримаєте інформацію про знайдені збіги.

regex101.com використовує інший різновид регулярного виразу, ніж той, який підтримується ярликами (докладніше про це за хвилину), але він досить близький, щоб у вас не було занадто багато проблем.

Використання цього інструменту чудово, оскільки ви можете спочатку написати туди свій регулярний вираз, а потім скопіювати його в програму «Ярлики», коли він запрацює належним чином.

Якщо ви не хочете навчитися використовувати регулярний вираз із програмою «Ярлики», прочитайте це

Я розумію – не всі захочуть навчитися використовувати регулярні вирази з ярликами. Це вміння, а це означає, що для цього знадобиться час і практика. Це далеко не так просто, як інші функції перетягування в додатку Ярлики.

Не турбуйтеся! Хоча ви не зможете отримати таку користь від програми «Ярлики», як той, хто витрачає час на вивчення регулярних виразів, для вас все ще є доступні варіанти. А саме, в Інтернеті є сайти та сторінки, де люди створили список фрагментів коду регулярного виразу, які ви можете скопіювати та вставити в програму Ярлики.

Ось кілька посилань, які можна перевірити, якщо ви не хочете вивчати регулярні вирази:

  • 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

Просто прочитайте ці посилання, і ви зможете знайти поширені рішення регулярних виразів для ярликів, які ви хочете створити. Це не буде варіантом без освіти, оскільки все одно знадобиться трохи, щоб зрозуміти те, що ви дивитеся. Але це набагато простіше і ідеальне рішення для тих, у кого немає часу вводити регулярні вирази.

Тим не менш, я повинен визнати, що регулярні вирази не надто важко вивчити, особливо якщо у вас є досвід роботи з кодом оболонки або програмуванням для початківців. Спершу для мене регулярні вирази здалися безглуздими, але після години читання статей і гри з regex101.com я зміг почати писати регулярні вирази для своїх ярликів.

Це просто знайомство – після того, як ви досить довго дивитеся на нього, воно перестане виглядати таким дивним. Тож якщо у вас є час і ви просто налякані, не варто!

Регулярний вираз для початківців: почніть використовувати регулярний вираз за допомогою ярликів

Гаразд, досить передмови! Ви повинні мати уявлення про те, що таке регулярний вираз, що він може робити, чому ви повинні його вивчати, і достатньо інформації, щоб вирішити, чи хочете ви його вивчити. Тепер ми перейдемо до тонкощів.

Нижче є багато вмісту, але не хвилюйтеся! Ця стаття буде скоріше навчальним посібником. Я рекомендую проглядати кожен розділ, щоб отримати уявлення про механіку, яку використовує регулярний вираз. Це також допоможе вам розібратися в цьому, якщо ви все ще не знаєте, що таке регулярний вираз.

Після того, як ви проглянете інформацію, я рекомендую відкрити regex101.com і пограти з кожним із інструментів у кожному розділі нижче. Це допоможе вам побачити, як ці поняття виглядають на практиці, а також покращить вашу пам’ять. Після того, як ви це зробите, ви можете просто розглядати цю статтю як орієнтир – до чого ви можете повернутися, коли забудете всі деталі регулярного виразу.

ОК, давайте йти!

Що таке регулярні вирази?

По-перше, ми розглянемо смаки регулярних виразів. Не хвилюйтеся – це не вплине на ваше щоденне використання регулярного виразу за допомогою ярликів. Це просто те, про що потрібно знати, перш ніж почати.

Існують різні версії регулярного виразу, відомі як «смаки». Ці різні версії все ще дуже схожі. Якщо ви можете навчитися читати і писати один аромат, ви повинні вміти читати будь-який з них. Будуть лише невеликі відмінності в тому, як має бути відформатований ваш код регулярного виразу.

У програмуванні ці особливості форматування відомі як «синтаксис». Це просто спосіб, яким ви повинні написати свій код, щоб цей код був зрозумілий програмі, в якій ви його пишете.

Ось чому синтаксис має значення

«Гей, друже, як проходить твій день?»

«, йдеш друже? твій привіт, як»

Обидва речення мають однакові слова, символи та пробіли. Однак лише один має сенс, і це тому, що він дотримується загальноприйнятого синтаксису.

У кодуванні одна мова програмування може розуміти першу версію, але не іншу. Однак для іншої мови програмування друга може мати повний сенс, тоді як перша виглядає як тарабарство. Однак тому, хто розмовляє англійською, ви, напевно, зрозумієте намір обох рядків, навіть якщо для того, щоб зрозуміти значення, знадобиться трохи попрацювати.

Ось так (якщось) схожі різні смаки регулярного виразу. Всі вони будуть виглядати трохи інакше і трохи схожими на вас. Але ви повинні використовувати правильний смак для програми, яку ви використовуєте, інакше ця програма не матиме поняття, що ви написали.

Додаток «Ярлики» розуміє смак регулярного виразу ICU, тому ви хочете використовувати його. На сайті regex101.com є кілька різних варіантів, які ви можете вибрати зліва на сторінці. Однак він використовує PCRE, що дуже схоже на ICU.

Важливо знати, що існують різні варіанти регулярного виразу, тому що ви, безсумнівно, зіткнетеся з різними смаками в Інтернеті. Якщо ви знайшли трохи регулярного виразу, який хочете вкрасти, але не можете змусити його працювати за допомогою ярликів, або він просто виглядає не так, перевірте, в якому стилі він написаний!

Веб-сайти та посилання, які допоможуть вам почати вивчати регулярні вирази за допомогою ярликів

Ще одна річ, яку я хочу розглянути, перш ніж ми почнемо досліджувати фактичну механіку написання регулярного виразу, — це ресурси. Я ні в якому разі не стверджую, що ця публікація є вичерпним ресурсом для вивчення регулярних виразів. Це просто покликана бути корисною відправною точкою для тих, хто хоче використовувати регулярні вирази з ярликами.

Якщо ви хочете глибше зануритися в регулярні вирази або відчуваєте, що ця стаття не надає вам необхідної допомоги, ви можете ознайомитися з деякими з цих статей, посібників та інструментів:

  • https://regex101.com – Веб-сайт, який дає змогу тестувати код регулярного виразу в режимі реального часу.
  • https://www.shortcutfoo.com/app/dojos/regex/cheatsheet – Шпаргалка, коли ви забуваєте, що робить кожен персонаж
  • http://www.rexegg.com – Цей веб-сайт є вичерпним ресурсом для вивчення всього, що вам потрібно знати про регулярні вирази. Перевірте цей варіант, якщо ви хочете опанувати регулярними виразами.
  • https://scottwillsey.com/blog/ios/regex1/ – Це серія блогів із чотирьох частин про використання регулярного виразу з ярликами. Я використовую зовсім інший підхід від цього посібника, тому він повинен стати гарною серією супутників до цієї статті.
  • Stack Overflow і Reddit — хороші веб-сайти, де можна поділитися своїми запитаннями про регулярні вирази та отримати поради та відповіді.

Ці ресурси відрізняються від перелічених у Якщо ви не хочете навчитися використовувати регулярний вираз із програмою Ярлики розділ, оскільки всі вони вимагатимуть від вас фактично почати вивчати регулярні вирази. Вони більш вичерпні, а інші є лише орієнтирами.

Як виконати базовий текстовий пошук за допомогою регулярного виразу з ярликами

добре! Тепер ми досягли того моменту, якого всі чекали: ми збираємося вивчити основи використання регулярного виразу з ярликами.

Давайте почнемо з базового пошуку, оскільки це найпростіше, що ви можете зробити за допомогою регулярного виразу. Як згадувалося раніше, я рекомендую відкрити regex101.com на іншій вкладці, щоб ви могли слідкувати за цим.

У більшості своїй регулярний вираз буде шукати (або матч) все, що ви в ньому вводите. Наприклад, якби я друкував добре як мій код регулярного виразу, він знайде кожен екземпляр слова «Добре» у цьому посібнику.

Регістр, пробіли та розділові знаки мають значення. Це означає, що добре, добре, добре!, і добре , всі вони дадуть різні результати.

І це все! Щоразу, коли ви вводите щось у пошук регулярного виразу без використання спеціальних символів, регулярний вираз буде відповідати всьому, що точно відповідає тому, що ви ввели.

Є одна заковика! Деякі символи на вашій клавіатурі також є спеціальними символами регулярного виразу. Це означає, що вони виконують якусь функцію в коді регулярного виразу.

The ? символ є одним із таких символів. Він використовується в коді регулярного виразу як квантор. Отже, якщо ви спробуєте шукати «Добре?» набравши текст добре як ваш код регулярного виразу, ви не отримаєте того, що хочете.

Щоб виправити це, ви повинні вказати, що ви хочете використовувати «?» як рядок, а не як спеціальний символ. Щоб зробити це для цього або будь-якого іншого персонажа, просто додайте a \ символ прямо перед символом, спеціальні властивості якого потрібно анулювати.

Тож якщо ви хочете шукати «Гаразд?» з регулярним виразом ваш код матиме такий вигляд:

Добре\?

Якщо ви не впевнені, чи певний символ розглядається як спеціальний символ за допомогою регулярного виразу, ви можете перевірити ця шпаргалка для всіх спеціальних символів у регулярному виразі.

Шукайте більше одного слова за допомогою символу «або».

Іншим важливим компонентом пошуку рядків за допомогою регулярного виразу є використання функції «або». Це символ, який ви можете розмістити між двома словами/символами, щоб сказати: «З’єднай це чи це».

Наприклад, якщо я хочу шукати в тексті слова "alright" і "Alright", я б використав | характер. Як так:

Добре|добре

Якщо вам важко знайти | персонаж, утримуйте зміна натисніть і натисніть \ ключ. Це вище повернутися клавіша на більшості клавіатур.

Додавання змінних компонентів у пошук регулярного виразу

Гаразд, тепер, коли ви знаєте, що таке нейтральний регулярний вираз, настав час вибрати свій перший спеціальний символ. Це були б квадратні дужки, які є цими речами [].

Все, що ви введете в ці дужки, вважатиметься змінним компонентом вашого пошуку регулярного виразу. Ви можете помістити в дужки скільки завгодно символів, хоча лише один буде дійсним для кожного збігу.

Гаразд, це звучить трохи складно, але це не так! Ось як це виглядає на практиці:

  • [А] добре просто відповідатиме слову «Добре». Якось безглуздо.
  • [AB] Добре відповідатиме як «Alright», так і «Blright».
  • Добре відповідатиме «Alright», «Alroght», «Alrught», «Alrxght» тощо.

Ви можете комбінувати символи в дужках, а також використовувати кілька дужок в одному рядку регулярного виразу. [AB]r[i1]gh[tuvwxyz] є дійсним елементом регулярного виразу. Сподіваюся, однак, це не виглядає таким хаотичним, як могло бути кілька хвилин тому!

Діапазони можуть розширити пошук

Наступним елементом регулярного виразу, який буде корисним із ярликами, є діапазон. Діапазони дозволяють вказати діапазон символів, які ви приймаєте.

У попередньому розділі ви, можливо, помітили, що мої дужки містять багато послідовних літер. Найдовша була [tuvwxyz]. Ці літери з’являються в алфавіті в тому самому порядку, поруч одна з одною.

Це означає, що я міг би використовувати діапазон замість того, щоб вводити їх. Це виглядало б так:

добре [t-z]

Цей фрагмент коду регулярного виразу виконуватиме те саме, що добре [tuvwxyz]. Це просто акуратніше і легше писати.

Ви можете замінити той самий діапазон на [a-z] якщо ви хочете, щоб він сприймав будь-яку малу літеру алфавіту. Або ви могли б скористатися [0-9] якщо ви хочете прийняти будь-яке однозначне число.

Ви також можете комбінувати діапазони в межах однієї дужки. Наприклад, це Добре [i-ux-z]ght буде приймати «Alright», «Alroght», «Alrxght» і «Alryght», але не прийматиме «Alraght» або «Alrvght».

Існують інші варіанти слова «Добре», які цей код, до речі, прийме, і багато інших, які він не приймає. Це лише короткий вибір, щоб усе було коротким.

Якщо вам важко зрозуміти, що [i-ux-z] означає, може допомогти побачити, що це написано так:

[i-u, x-z]

Це неправильний синтаксис регулярного виразу – ви не повинні використовувати кому для розділення діапазонів. Але, сподіваюся, це допоможе зрозуміти більше!

Вам не потрібні коми в регулярному виразі, щоб розділити діапазони, і вам не потрібно розміщувати діапазони поруч один з одним. Ви можете змінити його на [i-uabcx-z]. Це дозволить прийняти ті ж діапазони, що й раніше, плюс символи «a», «b» і «c».

Як виключити слова та символи з пошуку регулярного виразу за допомогою ярликів

Гаразд, тепер ми кудись прийдемо! Якщо ви дослідили цю статтю до цього моменту, ви зможете подивитися на наведений нижче код і зрозуміти, для чого він відповідає:

Ap[p-r]le[Tt]ool[BbLF]ox

Якщо ви вмієте це прочитати, ви знаєте, що частина коду регулярного виразу містить багато можливих варіантів слова «AppleToolBox». То що, якщо ми хочемо зменшити кількість варіацій, які він приймає, не змінюючи наш діапазон?

Ось тут і з’являється символ «ні». Це виглядає так: ^. Якщо вам важко знайти його на клавіатурі (як я), утримуйте зміна і натисніть кнопку 6 клавішу на клавіатурі.

Щоб використовувати ^ символу, розмістіть його на початку символу, який потрібно виключити.

Є заковика! The ^ символ не працює за межами функції регулярного виразу. Ви не можете просто розмістити його перед літерою «А», щоб він виключив цю літеру з пошуку. Код регулярного виразу просто шукатиме велику «А».

Натомість поєднайте його з дужками та іншими спеціальними символами регулярного виразу.

Наприклад, якби я хотів шукати будь-який екземпляр слова «Добре», яке не починається на літеру «А», я б використав код [^A] Добре.

Ви навіть можете комбінувати його з діапазонами! Просто поставте його на початку вашої дужки, і все, що входить у цю дужку, включаючи діапазони, буде виключено з вашого пошуку. Як так:

Що робити, якщо ви хочете виключити конкретне слово зі свого пошуку?

Мені було важко знайти цю інформацію. Однак користувач Stack Overflow мав рішення, і воно виглядає так:

^(?!(слово)$).+$

Просто замініть слово будь-яким словом, яке ви хочете виключити зі свого пошуку. Як так:

Ви можете прочитати цю публікацію Stack Overflow тут якщо ви хочете дізнатися більше про цей конкретний варіант використання.

Підстановкові знаки можуть надати вам більше варіантів пошуку

Це підводить нас до символів підстановки. Символ підстановки, який є крапкою ., використовується для представлення будь-якого окремого символу без жодного. Якщо просто ввести . як ваш код регулярного виразу з ярликами, він повертатиме кожен символ у тексті як окрему відповідність.

Я б не радив використовувати його для цієї мети, звичайно! Натомість я рекомендую використовувати його замість одного символу в слові. Наприклад, добре відповідатиме “Alright”, “Alrxght”, “Alr

І це майже все! Символ підстановки досить легко зрозуміти. Це відповідає всьому! Це робить його корисним для пошуку рядків, які відповідають певному формату, але мають унікальні символи.

Наприклад, електронні листи будуть виглядати дуже схожими, але не однаковими. Підстановка може допомогти вам об’єднати елементи, про які ви знаєте, що там будуть (наприклад, «.com» і «@») із символами, яких ви не знаєте (наприклад, «my_email567», iCloud або «Gmail»).

Ще один цікавий випадок використання - використання . символ, щоб знайти рядки певної довжини.

Наприклад, якщо я хочу знайти кожен чотирисимвольний рядок у тексті, я міг би скористатися ... з пробілом по обидва боки.

А ось усі рядки із семи символів у тому самому тексті:

Зауважте, що це не ідеальний метод для пошуку рядків певної довжини. Як ви можете бачити у наведених вище прикладах, деякі рядки зіставляються, які не повинні бути, а деякі, які слід ігнорувати. Просто цікаво пам’ятати, що ви можете використовувати . символ для підрахунку символів.

Також майте на увазі, що . є спеціальним символом у регулярному виразі. Це означає, що вам потрібно буде додати a \ перед ним, якщо ви хочете шукати точки. Це означає, що вам доведеться використовувати Добре\. відповідати «Гаразд».

Використовуйте квантифікатори, щоб визначити довжину тексту, який ви шукаєте

Гаразд, ви можете технічно використовувати . символ, щоб знайти рядок, який займає певну кількість символів. Однак у більшості випадків вам захочеться бути більш конкретними.

Ось тут і приходять кількісні показники. Квантифікатори дозволяють вказати довжину рядка, яку ви шукаєте під час використання регулярного виразу з ярликами.

Наприклад, скажімо, що ви хочете знайти будь-яке слово, яке складається з трьох літер. Щоб вказати це, ви захочете використовувати ці дужки:

{}

Коли ви розміщуєте ці дужки після них [] у дужках, ви вказуєте, що вам потрібен рядок, який відповідає кількості символів всередині цього {} і діапазон символів, зазначений у цьому [].

Я впевнений, що зараз це не має великого сенсу, тому давайте розглянемо приклад!

Скажімо, ви хочете знайти будь-які роки, згадані в тексті. Оскільки рік складається з чотирьох чисел (Очевидно, не щороку з усіх часів, просто слідуйте за мною сюди), ви можете використовувати цей код для порівняння років у цьому тексті:

[0-9]{4}

Цей код говорить про те, що нам потрібен рядок із символів від 0 до 9, довжиною якого є чотири символи. Ви можете побачити, як він знаходить цей конкретний рядок на наступному знімку екрана:

Я повинен зазначити, що з цим кодом регулярного виразу є деякі проблеми, і це те, що він не враховує пробіли або пунктуацію. Отже, якщо код знайде число більше чотирьох символів, наприклад «12345678», він знайде рядок «1234» і рядок «5678».

Щоб вирішити цю проблему, потрібно додати пробіл на початку коду та дужку після {4} який містить інший пробіл, крапку, знак питання, кому і знак оклику. Таким чином, він пропускатиме довгі рядки чисел, не пропускаючи рядки чисел, на кінці яких замість пробілу є розділові знаки.

Ви також можете використовувати квантори, щоб вказати більше однієї довжини рядка. Наприклад, можливо, я хочу знайти рядок завдовжки чотири символи, а також сім і одинадцять. Ось як це буде виглядати:

[a-z]{4,7,11}

Є ще кілька кількісних показників, про які вам потрібно знати

Добре, значить, є більше кількісних показників! Ці останні кілька кванторів призначені для тих випадків, коли ви хочете вказати довжину рядка, не будучи занадто конкретними.

Наприклад, скажімо, що ви хочете знайти рядок будь-якої довжини, якій може збігатися регулярний вираз. Як ім'я! Імена (у західних країнах) починаються з однієї великої літери і закінчуються випадковою кількістю малих літер, за якими йде пробіл. Щоб знайти ім'я, ви повинні написати наступний код:

[A-Z][a-z]*

[А-Я] вказує, що перший символ рядка має бути великою літерою. [a-z]* вказує, що решта рядка повинна складатися з малих літер, але не має значення, скільки букв слідують. А пробіл в кінці означає, що він закінчить збіг, коли знайде пробіл в кінці малих літер.

Золоте поєднання в регулярному виразі є .*. Це означає нескінченну відповідність будь-якому символу. Іншими словами, він відповідатиме всьому тексту як одному елементу.

Наступний квантор, який вам потрібно знати, це +. Цей просто як * за винятком того, що він не відповідатиме рядку з нульовими символами. * відповідатиме будь-якій довжині рядка, яка включає рядки, які не мають довжини. +, з іншого боку, потрібен рядок з принаймні одним символом або більше.

Нарешті, є ? квантор. Це дивно. Він визначає, що довжина рядка або нуль символів, або один символ. Ось і все – або нічого, або тільки одне. Отже, якщо ви використовуєте код [a-z]? з пробілом на початку і в кінці, він шукатиме окремі літери в тексті.

Пошук символів на початку і в кінці рядка тексту

Ми наближаємося до кінця нашого посібника з використання регулярного виразу з ярликами! Є ще два види коду регулярного виразу, які ви будете використовувати з ярликами.

Перші – це символи, які дозволяють порівнювати рядки на основі того, як вони починаються та/або закінчуються.

Якщо його немає в дужках, ^ роль персонажа змінюється зі значення «виключити» на «починається з». Він визначає, що рядок має починатися з того, що ви хочете. Наприклад, якщо ви пишете , що відповідатиме літері «A» в рядках «Alright», «Apple» і «A».

Однак це не відповідає всьому слову. Для цього вам потрібно буде змінити його на ^A[A-Za-z]*. Це буде відповідати першому слову абзацу/рядка, якщо це слово починається з великої «А».

Як примітку, можна написати [A-Za-z] як [A-z]. Це означає те саме, я вважаю, що перше стає трохи зрозумілішим, коли ви вчитеся.

Щоб вказати кінець рядка, ви захочете використовувати $ характер. Він працює так само, як ^ характер. Єдина відмінність полягає в тому, що ви пишете це в кінці дужки/рядка, а не на початку.

Наприклад, якщо ви хочете знайти рядки/абзаци, які закінчуються на «le», ви повинні використати код [A-z]*le$. Це буде відповідати «Таблиця», «яблуко» та «способний», якщо вони знаходяться в кінці рядка або абзацу.

Регулярний вираз навіть відхилить цю відповідність, якщо в кінці рядка є пробіл або розділовий знак. «Стіл». не буде відповідати цьому коду.

Щоб виправити це, ви можете врахувати пунктуацію. Цей код враховує різні форми розділових знаків і пробілів, які можуть зустрічатися в кінці рядка, включаючи розділовий знак, за яким слідує пробіл:

[A-z]*(le[\.\?!, ]?[ ]?)$

Цей код відповідатиме «Able», «table.», «stable» і «capable? “.

Зберігайте текстові рядки за допомогою функції групування регулярного виразу за допомогою ярликів

добре! Ви дійшли до кінця нашого посібника AppleToolBox щодо використання регулярного виразу з ярликами. Залишилося вивчити ще одну функцію регулярного виразу, і це групування.

Групування є, мабуть, найважливішою особливістю регулярного виразу, оскільки це те, що дозволяє вам робити речі з кодом регулярного виразу, який ви пишете. Без нього регулярний вираз — це лише функція пошуку. Він може лише повідомити, чи існує рядок у більшому об’ємі тексту, тобто він поверне «true» або «false».

Однак за допомогою групування ви можете зберігати результати свого коду регулярного виразу. А це означає, що ви можете копіювати збіги, зберігати їх у змінних, замінювати їх іншим текстом, змінювати їх форматування та все інше, що ви хотіли б робити за допомогою регулярного виразу.

На щастя, групувати дуже просто! Просто помістіть все, що ви хочете згрупувати в дужках (). Все, що ви введете в дужки, розглядатиметься як група.

Якщо помістити цілий рядок коду регулярного виразу в дужки, наприклад (.*@.*\..{3}), тоді ця група запам’ятається вашим кодом, що дозволить відкликати її пізніше.

Важливо, щоб ви використовували групи лише тоді, коли вам це потрібно. Оскільки вони зберігаються в пам’яті, вони можуть призвести до зниження продуктивності вашого коду. Збережіть групи, коли вони знадобляться!

Ви також можете використовувати групи для організації

Ви також можете використовувати групи для впорядкування коду регулярного виразу за допомогою ярликів. Коли ви це зробите, група в дужках не обов’язково запам’ятається.

Наприклад, скажімо, що я хочу знайти відповідність слову «Привіт», за винятком того, що мені все одно, яка остання літера. Це може бути будь-яка маленька або велика літера або навіть цифра. “Hell3838djdjajaksks” і “Hello” слід зараховувати як збіги. «Пекло», з іншого боку, не слід зараховувати.

Щоб це працювало, я пишу код Пекло[A-z]|[0-9]+. Але ось результат, який я отримую:

Причина, по якій він не відповідає тому, що я очікував, полягає в тому, що + застосовується лише до [0-9] кронштейн. Мені потрібно, щоб це застосувати до обох дужок.

Крім того, цей код говорить, що я хочу будь-який пекло [A-z]або[0-9]. Таким чином, він відповідає словам, які починаються на «Пекло» і закінчуються буквою, або шукає будь-які рядки чисел. Насправді мені потрібно, щоб він відповідав екземплярам слова «Пекло», які закінчуються літерою чи цифрою.

Щоб виправити це, я можу використовувати групу та переписати код як Пекло([A-z]|[0-9])+. Тепер він шукає слово «Пекло», за яким слідує будь-яка літера чи цифра. А тому що + застосовано до обох дужок, це може бути будь-яка комбінація букв і цифр, якщо є принаймні одна буква або цифра.

Як ви можете бачити на знімку екрана нижче, ця група вирішує мою проблему, не обов’язково зберігаючи інформацію в цій групі:

Що тепер?

І це все! Це майже все, що ви могли б знати про використання регулярного виразу з ярликами. Сподіваємося, ви відчуваєте себе достатньо впевнено, щоб почати експериментувати з регулярним виразом зараз, навіть якщо спочатку це не мало сенсу для вас.

Тепер, коли ви знаєте основи регулярного виразу, ви готові почати використовувати його у своїх ярликах! Ярлики приймають введення регулярного виразу для таких дій:

  • Текст відповідності
  • Замінити текст

Використовуючи ці дві дії ярликів, ви можете вставити регулярний вираз у свої ярлики.

Поєднайте це з можливостями автоматизації ярликів, і ви отримаєте досить потужний інструмент у вашому розпорядженні.

Ви можете використовувати регулярний вираз, щоб полегшити форматування тексту в ярликах, отримати інформацію з електронних листів, текстів, веб-сайтів, файли та події календаря, створювати текст у визначеному форматі, перевіряти, чи введено було правильно, і більше.

Наприклад, скажіть, що ви хочете знайти відповідність для електронних листів. Можливо, вам потрібно перевірити, що рядок тексту є електронною поштою, або, можливо, ви хочете витягти електронний лист (и) з основної частини тексту.

Як би ти розбив це?

Ну, ви знаєте, що базова структура електронного листа буде деякою комбінацією літер, цифр і символів, за якими слідує символ «@», а потім після назви веб-сайту, як-от Gmail або iCloud, за яким слідує «.com», «.org» або якийсь інший вид трисимвольного верхнього рівня домену.

Щоб записати це в регулярному виразі, вам потрібно вказати, що ви хочете отримати рядок довжиною принаймні один символ, за яким слід негайно символом «@», потім ще одним рядком із принаймні одним символом, за яким слід «.», а потім рядком із трьох символів. Це виглядало б так:

[електронна пошта захищена]+\..{3}

Якщо вставити це в Текст відповідності або Замінити текст дій у ярликах, у вас буде автоматика, яка зможе знаходити, зберігати та керувати адресою електронної пошти.

Ви можете використовувати такий спосіб вирішення проблем, щоб придумати власні рішення регулярного виразу або знайти ті, які інші зробили в Інтернеті!

Почніть використовувати регулярні вирази з ярликами, щоб перейти на новий рівень автоматизації

І це, друзі, дійсно так. Сподіваюся, вам сподобалося читати цю статтю! Це одна з найбільш амбітних робіт, які я коли-небудь писав для AppleToolBox. Мені довелося самому навчитися регулярного виразу, щоб написати його, і я сподіваюся, що цим я зміг допомогти вам його вивчити.

Використання регулярного виразу з ярликами нічим не відрізняється від навчання, як робити що-небудь ще на смартфоні або комп’ютері. Просто потратьте трохи часу і терпіння, і зрештою ви досягнете цього.

Щоб отримати додаткові посібники, навчальні посібники та новини про все Apple, перегляньте решту блог AppleToolBox.

добре [A-Z][a-z]+, побачимось наступного разу!