Программирование

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

Узнайте больше о специальных символах и выражениях Regex с примерами.

Регулярное выражение или регулярное выражение — это встроенная функция нескольких языков программирования в разных семействах (JavaScript, Java, C#, C/C++, Python, Ruby, …) для проверки, поиска, замены или проверки строки, если она соответствует определенному образец, который вы хотите, чтобы он выполнял. В следующем тексте мы обсудим большинство специальных символов, которые предоставляет регулярное выражение.

🚨 Все регистрозависимо, если не указан флаг i.

Якорные операторы

Символы: ^, $

Операторы привязки — это отдельные символы, которые привязываются строкой/группой символов в начале и/или в конце текста. Эти специальные символы отлично подходят для проверки абзацев, например:

^Hello — соответствует строке в начале с текстом Hello

Goodbye$ — соответствует строке в конце с текстом Goodbye

^Hello Goodbye$ — соответствует точной строке с текстом Hello Goodbye

Кванторные операторы

Символы: *, +, ?, {}

Кванторные операторы — это символы, которые соответствуют любому количеству строк/групп символов, идущих последовательно, но каждый из этих специальных символов подсчитывает количество по-разному. За символом * следует 0 или более символов, за символом + следует 1 или более символов, за символом ? следует 0 или 1 символ (это необязательный символ), а за символом {} следует определенное число или диапазон символов, примеры:

abc* — соответствует строке, за которой ab следует c 0 или более раз.

abc+ — соответствует строке, в которой ab сопровождается c 1 или более раз

abc? — соответствует строке, в которой ab сопровождается c 0 или 1 раз

abc{3} — соответствует строке, в которой ab сопровождается c 3 раза.

abc{3,} — соответствует строке, в которой ab сопровождается c 3 или более раз.

abc{3,5} — соответствует строке, в которой ab сопровождается c 3–5 раз подряд.

ab(cd)+ — соответствует строке, в которой за ab следует группа символов cd ноль или более раз.

ab(cd){2,7} — соответствует строке, в которой за ab следует группа символов cd 2–7 раз подряд.

операторы ИЛИ

Символы: |, []

Операторы ИЛИ — это символы, которые могут соответствовать тому или иному символу, то же самое и с группами символов. Эти специальные символы отлично подходят для проверки некоторого списка вещей, например, вы хотите проверить только два доменных имени в электронных письмах, вы используете or operator, примеры:

(outlook|gmail).com — соответствует строке с outlook или gmail перед .com

a[bc] — соответствует строке с символом b или c после a (только с набором символов)

Классы персонажей

Символы: \d, \w, \s, .

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

\d — соответствует одному символу, который является digit

\D — соответствует одному символу, который не является digit

\w — соответствует символу слова (letters, digits, _)

\W — соответствует всему, кроме слова

\s — соответствует пробельному символу (spaces, tabs, line breaks)

\S — соответствует всему, кроме пробела

. — соответствует любому заданному символу

Диапазоны

Символы: [-]

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

[a-z] — соответствует одному символу в диапазоне a-c.

[0-9] — соответствует одной цифре в диапазоне 0-9.

#[a-fA-F0-9]{6} — соответствует шестнадцатеричному цвету (без альфа-значения)

[^a-z] — соответствует одному символу, не входящему в диапазон a-z, символ ^ теперь работает как отрицание

Флаги

Символы: g, m, i

Регулярное выражение обычно прикрепляется внутри формы регулярного выражения, начиная и заканчивая /, например /abc/. Флаги — это то, что может расширить поиск соответствия в строке выражения. Это отдельные символы, которые идут после выражения, и мы можем комбинировать их друг с другом.

  • Флаг g, который обозначает global , не возвращается после того, как находит первое совпадение, он ищет весь переданный ему текст
  • Флаг m, который означает multi-line, когда включен, ^ и $ будут сопоставляться в каждой строке в качестве начала и конца, а не всего текста.
  • Флаг i, который означает insesitive, делает выражение нечувствительным к регистру, так что даже если передан неверно набранный текст, регулярное выражение все равно будет выполняться.

Примеры этих флагов:

/abc/g — глобальное совпадение с выражением abc

/^abc$/m — соответствует выражению abc в каждой строке

/aBc/i — соответствует выражению aBc без учета регистра.

Советы

  • Если мы хотим использовать символ, который уже используется в качестве специального символа, мы просто ставим перед ним \.
  • Вы можете проверить Игровую площадку RegExr, где вы можете попробовать создавать, сохранять и публиковать пользовательские выражения и передавать в них текст. Надеюсь, эта статья оказалась полезной для ваших будущих проектов.
  • Если вы хотите использовать регулярное выражение на каком-то этапе своего проекта, вы можете изучить множество онлайн-материалов или всегда можете вернуться к этой статье за ​​дополнительной помощью.

Заключение

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

  • Проверка данных (например, emails, telephone numbers, ZIP codes, …)
  • Сбор данных из Интернета (например, mass finding content)
  • Транскрипция IDE с одного языка программирования на другой
  • Подсветка синтаксиса, переименование файлов, замена текстов и т.д.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter и LinkedIn. Присоединяйтесь к нашему сообществу Discord.