Регулярное выражение: что это значит

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

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

[A-Za-Z0-9 _ + -.]. + @ [A-Za-Z0-9 _-] + \ [A-Za-Z0-9 _.-] +

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

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

Основы регулярных выражений

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

Первый более динамичный символ соответствия — «.» характер. В этом контексте символ точки является подстановочным знаком. Если вы ищете с ним, ваша программа вернет любой символ, который она найдет как совпадение.

Итак, что, если вы хотите искать буквальную точку? Это тоже не сложно. Если вы хотите использовать буквальный период, добавьте перед ним обратную косую черту, например: ‘\.’

Символы обратной косой черты

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

Цифры регулярного выражения
Нахождение цифр с регулярным выражением в Python.

Взгляните на несколько примеров:

  • \ d: цифры от 0 до 9
  • \ w: буквы, цифры и подчеркивание
  • \ s: пробельные символы, включая символы табуляции, переносы строк и обычные пробелы

Если вы используете заглавную букву вместо любого из них, вы получите обратное. Например, \ D дает вам все, кроме цифр.

Классы

Символы обратной косой черты хороши, но они все еще жесткие. Как правило, вы хотите сопоставить буквы, цифры или несколько специальных символов.

Классы регулярных выражений
Использование регулярных выражений для поиска букв в Python.

Поместите символы, которые вы хотите сопоставить, в пару квадратных скобок ‘[]’, и ваша программа будет соответствовать любому из них. Это называется классом регулярных выражений.

[Abcd1234]

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

[A-Z]

Вы также можете перечислить диапазоны. Выражение ниже соответствует всем буквам и цифрам:

[A-Za-Z0-9]

Если вы собираетесь включить тире в свой набор символов, отметьте его в конце, чтобы предотвратить его оценку. Он работает и с другими специальными персонажами.

[A-Za-Z0-9 _ + -.]

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

[^ 0-9 _ + .-]

группы

Группы используют набор скобок для разделения вашего выражения. Они группируют данные, позволяя вашей программе ориентироваться и использовать ее. Когда программа извлекает http: // с веб-адреса, она использует группы регулярных выражений для этого. Регулярное выражение позволяет ему задавать определенные критерии, а группы — отдельные разделы.

Группы регулярных выражений
Справка по группам Regex Поиск URL в JavaScript.

Группы также позволяют выбирать между тем или иным шаблоном. Они используют один ‘|’ действовать как «или» в выражении. Выражение ниже будет соответствовать любому из них: .com, .org, .net, .edu или .gov.

\. (Ком | орг | чистый | Edu | г)

Кванторы

Квантификаторы — это именно то, на что они похожи. Они говорят выражению количество персонажа, которого вы ищете. Вот доступные квантификаторы:

  • *: Ноль или больше
  • +: Один или больше
  • ?: Ноль или один
  • {3}: сумма в скобках

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

\ Д {3} [* -.] \ Д {3} [* -.] \ Д {4}

Якоря и границы

Регулярные выражения позволяют искать шаблоны на основе их положения в текстовой строке или вокруг слова.

Якоря регулярного выражения
Якоря Regex используют позиционирование для поиска соответствия в JavaScript.

Это ваши основные варианты:

  • ^: Начало строки
  • $: Конец строки
  • \ b: граница слова (начало или конец слова)

Если вы хотите найти только строки, начинающиеся с буквы, вы можете попробовать:

^ [A-Za-Z]

Скажем, вы хотите найти только слово «оно», а не слова, содержащие буквы I и T; вот где вы бы использовали границы слов.

\ Б (я | I) т \ б

Последние мысли

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

Ссылка на основную публикацию