Как начать использовать регулярное выражение с приложением ярлыков

Примерно в течение последнего месяца я рассказывал о приложениях Shortcuts и Automator для iOS и macOS соответственно. Оба являются мощными центрами автоматизации в экосистеме Apple, и, начиная с macOS Monterey этой осенью, ярлыки станут основным приложением для автоматизации на всех устройствах Apple. Вот почему я хотел посвятить эту статью обсуждению очень важной темы: использование регулярных выражений в приложении «Ярлыки».

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

Как бы то ни было, я решил глубже изучить регулярное выражение после того, как рассмотрел приложение Shortcuts за последние несколько месяцев. И я обнаружил, что многие ограничения, с которыми я столкнулся с помощью ярлыков, а также Automator, можно было преодолеть с помощью регулярного выражения.

Другими словами, дело не в том, что этим приложениям не хватало функций, а в том, что мне не хватало образования.

Итак, в сегодняшнем посте мы с вами вместе изучим все тонкости регулярного выражения. Таким образом, вы сможете максимально эффективно использовать каждое из этих приложений.

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

Хорошо, приступим!

СОДЕРЖАНИЕ

  • Что такое регулярные выражения (т.е. регулярное выражение)?
    • Что можно делать с регулярным выражением
  • Как можно использовать регулярное выражение с приложением «Ярлыки»?
  • Используйте regex101.com, чтобы проверить свои регулярные выражения
  • Если вы не хотите узнавать, как использовать регулярное выражение в приложении "Ярлыки", прочтите это
  • Регулярное выражение для начинающих: начните использовать регулярное выражение с помощью ярлыков
    • Что такое ароматы регулярных выражений?
    • Веб-сайты и ссылки, которые помогут вам начать изучение регулярных выражений с помощью ярлыков
    • Как выполнить простой текстовый поиск с использованием регулярного выражения с помощью ярлыков
    • Добавление переменных компонентов в поисковые запросы регулярных выражений
    • Диапазоны могут расширить область поиска
    • Как исключить слова и символы из поиска регулярных выражений с помощью ярлыков
    • Подстановочные знаки могут дать вам больше возможностей поиска
    • Используйте квантификаторы, чтобы указать длину искомого текста.
    • Есть еще несколько квантификаторов, о которых вам нужно знать
    • Поиск символов в начале и конце строки текста
    • Сохраняйте текстовые строки, используя функцию группировки регулярного выражения с помощью ярлыков
  • Что теперь?
    • Как бы вы это сломали?
  • Начните использовать регулярное выражение с ярлыками, чтобы вывести автоматизацию на новый уровень
    • Похожие сообщения:

Что такое регулярные выражения (т.е. регулярное выражение)?

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

Если вы не знаете, фрагмент текста внутри другого фрагмента текста в программировании называется «строкой». Например, слово «зеленый» представляет собой строку символов из текста «Сегодня я был в зеленых штанах».

Другими словами, регулярное выражение - это способ найти строку текста в большей части текста. А поскольку регулярное выражение написано в коде, вы можете использовать его для выполнения довольно сложных операций.

Например, если вы хотите найти слово «электронная почта», вы можете легко написать код регулярного выражения, который будет искать электронную почту.

Если вы хотите найти электронное письмо внутри абзаца и не знаете, что это за электронное письмо, вам нужно будет найти строку текста, отформатированную как электронное письмо. т.е. строка, следующая за символом «[электронная почта защищена]»Формат.

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

По мере того, как вы станете более опытным и опытным в работе с регулярными выражениями, вы сможете делать все это и многое другое.

Что можно делать с регулярным выражением

Хорошо, может быть, примеры с электронной почтой, которые я только что привел, не так практичны. Не волнуйтесь - это далеко не предел возможностей регулярного выражения в приложении Shortcuts.

Вообще говоря, все, что может делать регулярное выражение, попадает в одну из этих четырех категорий:

  1. Найдите строку текста в более крупном фрагменте текста (т. Е. Поиск слова / строки / типа строки на странице текста).
  2. Убедитесь, что строка текста соответствует желаемому формату (т. Е. Убедитесь, что строка текста написана заглавными буквами / упорядочена / правильно пунктирована).
  3. Заменить или вставить текст в определенную область фрагмента текста.
  4. Разделить строку текста в указанных точках (например, разделить кусок текста каждый раз, когда есть запятая).

Уровень глубины, который вы можете использовать для взаимодействия с каждым из этих видов функций, и то, как вы можете комбинировать их, делают регулярное выражение невероятно мощным инструментом для анализа текста и управления им.

Как можно использовать регулярное выражение с приложением «Ярлыки»?

Хорошо, теперь вы, надеюсь, имеете общее представление о том, для чего используется регулярное выражение. Это тип кода, который можно использовать для поиска текста, даже если вы точно не знаете, что это за текст.

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

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

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

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

Вы даже можете скопировать основной текст из одного приложения, переформатировать его в соответствии с предпочтениями другого приложения, а затем вставить его в это другое приложение одним щелчком правой кнопки мыши.

Другими словами, регулярное выражение дает вам полный контроль над обработкой текста с помощью приложения «Ярлыки». Сначала это может показаться не очень полезным, но теперь, когда вы знаете, что он существует, вы наверняка начнете замечать, сколько ярлыков можно улучшить с помощью этой функции. И вы также заметите, что многие сочетания клавиш невозможны без регулярного выражения.

Используйте regex101.com, чтобы проверить свои регулярные выражения

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

Проверить код регулярного выражения действительно сложно. И это не уникально для регулярных выражений. Тестировать что-либо с помощью приложения Shortcuts довольно сложно. Единственный способ сделать это - запустить ярлык. Этот метод неплох, когда вы просто тестируете встроенные функции ярлыков.

Но для тестирования кода это не позволяет проводить построчную проверку и не дает много отзывов.

Для этого я бы рекомендовал использовать regex101.com. Это сайт, на котором вы можете вводить код регулярного выражения в режиме реального времени. Вы также можете ввести текст в текстовый редактор на той же веб-странице. По мере ввода каждого из них вы увидите, работает ли ваше регулярное выражение, почему оно работает или не работает, и получите информацию о найденных совпадениях.

regex101.com использует другой вид регулярных выражений, чем тот, который поддерживается Shortcuts (подробнее об этом через минуту), но он достаточно близок, чтобы у вас не должно было возникнуть слишком много проблем.

Этот инструмент удобен тем, что вы можете сначала написать там свое регулярное выражение, а затем скопировать его в приложение «Ярлыки», когда оно заработает должным образом.

Если вы не хотите узнавать, как использовать регулярное выражение в приложении "Ярлыки", прочтите это

Я понимаю - не все захотят узнать, как использовать регулярное выражение с ярлыками. Это навык, а это значит, что потребуется время и практика. Это далеко не так просто, как остальные функции перетаскивания в приложении "Ярлыки".

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

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

  • 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 и поиграть с каждым из инструментов в каждом разделе ниже. Это поможет вам увидеть, как концепции выглядят на практике, а также улучшить вашу память. После того, как вы это сделаете, вы можете просто рассматривать эту статью как ориентир - то, к чему вы можете вернуться, когда забудете детали регулярного выражения.

Хорошо пойдем!

Что такое ароматы регулярных выражений?

Сначала мы рассмотрим разновидности регулярных выражений. Не волнуйтесь - это не повлияет на ваше повседневное использование регулярных выражений с помощью ярлыков. Это просто то, о чем нужно знать, прежде чем начать.

Существуют разные версии регулярных выражений, известные как «ароматы». Эти разные версии все еще очень похожи. Если вы научитесь читать и писать один аромат, вы сможете прочитать любой из них. Просто будут небольшие различия в том, как должен быть отформатирован ваш код регулярного выражения.

В программировании эти особенности форматирования известны как «синтаксис». Это просто способ, которым вы должны написать свой код, чтобы этот код был понят приложением, в котором вы его пишете.

Вот почему синтаксис важен

«Привет, друг, как твой день?»

«Собирается друг? Привет, день, как?

Оба предложения содержат одинаковые слова, символы и пробелы. Но только один имеет смысл, и это потому, что он следует стандартному синтаксису.

При кодировании один язык программирования может понимать первую версию, но не вторую. Однако для другого языка программирования второй может иметь смысл, в то время как первый выглядит тарабарщиной. Тем не менее, для тех, кто говорит по-английски, вы, вероятно, сможете понять смысл обеих строк, даже если потребуется немного поработать, чтобы понять их значение.

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

Приложение Shortcuts понимает специфику регулярных выражений 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 на другой вкладке, чтобы вы могли следить за ним.

По сути, регулярное выражение будет искать (или соответствие) все, что вы в него вводите. Например, если бы я набрал Хорошо как мой код регулярного выражения, он найдет все вхождения слова «Хорошо» в этом руководстве.

Регистр, интервалы и пунктуация имеют значение. Это означает, что Хорошо, хорошо, Хорошо!, а также Хорошо , все будут давать разные результаты.

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

Есть одна загвоздка! Некоторые символы на клавиатуре также являются специальными символами регулярного выражения. Это означает, что они выполняют какую-то функцию в коде регулярного выражения.

В ? символ - один из таких персонажей. Он используется в коде регулярных выражений как квантификатор. Итак, если вы попытаетесь выполнить поиск по запросу «Хорошо?» набрав Хорошо? в качестве кода регулярного выражения вы не получите то, что хотите.

Чтобы исправить это, вы должны указать, что хотите использовать «?» как строка, а не как специальный символ. Чтобы сделать это для этого или любого другого персонажа, просто добавьте \ символ прямо перед символом, особые свойства которого вы хотите обнулить.

Итак, если вы хотите выполнить поиск по запросу «Хорошо?» с регулярным выражением ваш код будет выглядеть так:

Хорошо\?

Если вы не уверены, обрабатывается ли определенный символ как специальный символ регулярным выражением, вы можете проверить эта шпаргалка для всех специальных символов в регулярном выражении.

Искать более одного слова с помощью символа «или»

Другой важный компонент поиска строк с помощью регулярного выражения - использование функции «или». Это символ, который вы можете поместить между двумя словами / символами, чтобы сказать: «Сопоставьте это или это».

Например, если я хочу найти в тексте слова «хорошо» и «хорошо», я бы использовал | персонаж. Вот так:

Хорошо | хорошо

Если вам сложно найти | персонаж, удерживайте сдвиг клавишу вниз и нажмите \ ключ. Это выше возвращение клавиша на большинстве клавиатур.

Добавление переменных компонентов в поисковые запросы регулярных выражений

Итак, теперь, когда вы знаете, что такое нейтральное регулярное выражение, пора выбрать свой первый специальный символ. Это были бы квадратные скобки, которые означают эти вещи [].

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

Хорошо, это звучит немного сложно, но это не так! Вот как это выглядит на практике:

  • [Хорошо будет просто соответствовать слову «Хорошо». Вроде бессмысленно.
  • [AB] lright будет соответствовать как «Хорошо», так и «Брайт».
  • Alr [iouxyz] ght будет соответствовать «Alright», «Alroght», «Alrught», «Alrxght» и так далее.

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

Диапазоны могут расширить область поиска

Следующий фрагмент регулярного выражения, который будет полезен с ярлыками, - это диапазон. Диапазоны позволяют указать допустимый диапазон символов.

В предыдущем разделе вы могли заметить, что в моих скобках было много букв, идущих подряд. Самый длинный был [tuvwxyz]. Эти буквы появляются в алфавите в том же порядке, рядом друг с другом.

Это означает, что я мог бы использовать диапазон вместо того, чтобы вводить их. Это выглядело бы так:

Хорошо [t-z]

Этот фрагмент кода регулярного выражения будет делать то же самое, что и Хорошо [tuvwxyz]. Просто аккуратнее и проще писать.

Вы можете заменить тот же диапазон на [а-я] если вы хотите, чтобы он принимал любую строчную букву алфавита. Или вы могли бы использовать [0-9] если вы хотите принять однозначное число.

Вы также можете комбинировать диапазоны в одной скобке. Например, это Alr [i-ux-z] ght будет принимать «Alright», «Alroght», «Alrxght» и «Alryght», но не принимать «Alraght» или «Alrvght».

Между прочим, есть и другие варианты слова «Хорошо», которые этот код принимает, и многие другие варианты, которые он не принимает. Это всего лишь небольшая подборка для краткости.

Если вам сложно понять, что [i-ux-z] означает, что это может помочь увидеть, что это написано так:

[i-u, x-z]

Это неправильный синтаксис регулярного выражения - не следует использовать запятую для разделения диапазонов. Но, надеюсь, это поможет понять смысл!

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

Как исключить слова и символы из поиска регулярных выражений с помощью ярлыков

Хорошо, теперь мы к чему-то приближаемся! Если вы читали эту статью до этого момента, вы сможете взглянуть на приведенный ниже код и понять, для чего он соответствует:

Ап [п-р] ле [Tt] оол [BbLF] ox

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

Вот тут-то и появляется символ «не». Выглядит это так: ^. Если вам трудно найти его на клавиатуре (как я), удерживайте сдвиг и нажмите 6 клавишу на клавиатуре.

Чтобы использовать ^ символ, поместите его в начало символа, который вы хотите исключить.

Тут есть загвоздка! В ^ символ не работает вне функции регулярного выражения. Вы не можете просто поместить его перед буквой «А», чтобы исключить эту букву из поиска. Код регулярного выражения ^ А будет искать только заглавную букву «А».

Вместо этого объедините его со скобками и другими специальными символами регулярных выражений.

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

Вы даже можете комбинировать его с диапазонами! Просто поместите его в начало вашей скобки, и все, что находится в этой скобке, включая диапазоны, будет исключено из вашего поиска. Вот так:

Что делать, если вы хотите исключить определенное слово из поиска?

Мне было трудно найти эту информацию. Однако у пользователя Stack Overflow было решение, и оно выглядит так:

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

Просто замените слово любым словом, которое вы хотите исключить из поиска. Вот так:

Вы можете прочитать этот пост о переполнении стека здесь если вы хотите узнать больше об этом конкретном варианте использования.

Подстановочные знаки могут дать вам больше возможностей поиска

Это подводит нас к шаблонам. Подстановочный знак, то есть точка ., используется для представления любого отдельного символа, без исключений. Если вы просто наберете . как ваш код регулярного выражения с ярлыками, он будет возвращать каждый символ в теле текста как индивидуальное совпадение.

Конечно, я бы не рекомендовал использовать его для этой цели! Вместо этого я рекомендую использовать его вместо одного символа в слове. Например, Alr.ght будет соответствовать «Хорошо», «Хорошо», «Алр».

Вот и все! Подстановочный знак довольно легко понять. Подходит ко всему! Это помогает находить строки, соответствующие определенному формату и имеющие уникальные символы.

Например, все электронные письма будут выглядеть очень похожими, но не одинаковыми. Подстановочный знак может помочь вам объединить элементы, которые, как вы знаете, будут там (например, «.com» и «@»), с неизвестными вам символами (например, «my_email567», iCloud или «Gmail»).

Еще один интересный вариант использования - использование . символ, чтобы найти строки определенной длины.

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

А вот и все семизначные строки в том же тексте:

Обратите внимание, что это не идеальный метод для поиска строк определенной длины. Как вы можете видеть в приведенных выше примерах, некоторые строки совпадают, чего не должно быть, а некоторые, которые должны были быть, проигнорированы. Просто интересно помнить, что вы можете использовать . символ для подсчета символов.

Также имейте в виду, что . - специальный символ в регулярном выражении. Это означает, что вам нужно будет добавить \ перед ним, если вы хотите найти периоды. Это означает, что вам придется использовать Хорошо\. чтобы соответствовать "Хорошо".

Используйте квантификаторы, чтобы указать длину искомого текста.

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

Вот тут-то и пригодятся кванторы. Квантификаторы позволяют указать длину искомой строки при использовании регулярного выражения с ярлыками.

Например, вы хотите найти любое слово, состоящее из трех букв. Чтобы указать это, вы захотите использовать эти скобки:

{}

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

Я уверен, что сейчас это не имеет особого смысла, поэтому давайте рассмотрим пример!

Допустим, вы хотите найти какие-либо годы, упомянутые в тексте. Поскольку год состоит из четырех цифр (очевидно, не каждый год за все время, просто следуйте за мной здесь), вы можете использовать этот код для сопоставления лет в этом тексте:

[0-9]{4}

Этот код говорит, что нам нужна строка, состоящая из символов от 0 до 9, которая имеет длину четыре символа. Вы можете увидеть, как он находит эту конкретную строку, на следующем снимке экрана:

Я должен отметить, что есть некоторые проблемы с этим кодом регулярного выражения, и это то, что он не учитывает пробелы и знаки препинания. Таким образом, если код находит число длиной более четырех символов, например «12345678», он найдет строку «1234» и строку «5678».

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

Вы также можете использовать квантификаторы, чтобы указать более одной длины строки. Например, может быть, я хочу найти строку длиной в четыре символа, а также семь и одиннадцать символов. Вот как это будет выглядеть:

[а-я] {4,7,11}

Есть еще несколько квантификаторов, о которых вам нужно знать

Итак, есть еще квантификаторы! Эти последние несколько квантификаторов предназначены для случаев, когда вы хотите указать длину строки, не будучи слишком конкретным.

Например, предположим, что вы хотите найти строку любой длины, которой может соответствовать регулярное выражение. Как имя! Имена (в западных странах) начинаются с одной заглавной буквы и заканчиваются случайным количеством строчных букв, за которыми следует пробел. Чтобы найти имя, вы должны написать следующий код:

[А-Я] [А-Я] *

[А-Я] указывает, что первый символ строки должен быть заглавной буквой. [а-я] * указывает, что остальная часть строки должна состоять из строчных букв, но не имеет значения, сколько букв следует за ним. И пробел в конце означает, что матч завершится, как только он найдет пробел в конце строчных букв.

Золотая комбинация в регулярном выражении .*. Это означает бесконечное совпадение с любым символом. Другими словами, он будет соответствовать всему тексту как одному элементу.

Следующий количественный показатель, который вам нужно знать, это +. Это похоже на * за исключением того, что он не соответствует строке с нулевыми символами. * будет соответствовать любой длине строки, включая строки, не имеющие длины. +с другой стороны, требуется строка, содержащая хотя бы один или несколько символов.

Наконец, есть ? квантификатор. Это странно. Он указывает, что строка имеет длину либо ноль символов, либо длину одного символа. Вот и все - ничего или всего одно. Итак, если вы используете код [а-я]? с пробелом в начале и в конце он будет искать отдельные буквы в тексте.

Поиск символов в начале и конце строки текста

Мы приближаемся к концу нашего руководства по использованию регулярных выражений с ярлыками! Есть еще два вида кода регулярных выражений, которые вы будете использовать с ярлыками.

Первые - это символы, которые позволяют сопоставлять строки в зависимости от того, как они начинаются и / или заканчиваются.

Если его нет в скобках, ^ роль персонажа меняется со значения «исключать» на «начинается с». Он указывает, что строка должна начинаться с того, что вы хотите. Например, если вы напишете ^ А, что соответствует букве «А» в строках «Хорошо», «Яблоко» и «А».

Однако это не соответствует всему слову. Для этого вам нужно будет изменить его на ^ A [A-Za-z] *. Это будет соответствовать первому слову абзаца / строки, если это слово начинается с заглавной буквы «А».

В качестве примечания вы можете написать [A-Za-z] в качестве [A-z]. Это означает то же самое, просто я считаю, что первое немного понятнее, когда вы учитесь.

Чтобы указать конец строки, вам нужно использовать $ персонаж. Он работает так же, как и ^ персонаж. Единственная разница в том, что вы пишете его в конце скобки / строки, а не в начале.

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

Regex даже отклонит это совпадение, если в конце строки есть пробел или знак препинания. "Стол." не будет соответствовать этому коду.

Чтобы исправить это, вы можете учитывать пунктуацию. Этот код учитывает различные формы пунктуации и пробелов, которые могут встречаться в конце строки, включая знак препинания, за которым следует пробел:

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

Этот код будет соответствовать «Able», «table.», «Стабильный» и «способный? “.

Сохраняйте текстовые строки, используя функцию группировки регулярного выражения с помощью ярлыков

Хорошо! Вы дошли до конца нашего руководства AppleToolBox по использованию регулярных выражений с ярлыками. Осталось изучить еще одну функцию регулярного выражения - группировку.

Группировка, пожалуй, самая важная функция регулярного выражения, поскольку она позволяет вам делать что-то с кодом регулярного выражения, который вы пишете. Без него регулярное выражение - это просто функция поиска. Он может только сказать вам, существует ли строка в более крупном тексте, т. Е. Вернет «истина» или «ложь».

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

К счастью, группировать очень просто! Просто заключите в скобки все, что хотите сгруппировать. (). Все, что вы укажете в скобках, будет рассматриваться как группа.

Если вы поместите всю строку кода регулярного выражения в круглые скобки, например (.*@.*\..{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.

Хорошо [А-Я] [А-Я] +, Увидимся в следующий раз!