2021-05-12 19:04:07
Регулярные выраженияЕсли у вас есть проблема и вы решили использовать регулярные выражения, у вас уже две проблемы. (с)
Сегодня хочу рассказать о регулярных выражениях тем, кто пока не знает, что это такое.
Регулярные выражения - это набор специальных символов, которые позволяют искать в каком-нибудь тексте похожие выражения. Думаю, все вы пользовались комбинацией клавишь Ctr + F для поиска чего-нибудь в документе. Так вот это был поиск точных совпадений. А регулярные выражения умеют искать не только точные совпадения, но и совпадения в тексте, соответствующие определённому шаблону.
Например: вы хотите найти все числа в тексте. Или все слова, заканчивающиеся на согласную букву. Или все слова, которые начинаются с большой буквы. Или все слова, перед которыми стоит какое-нибудь число. Можно придумать сотни примеров, где можно таким образом использовать регулярные выражения. Общее тут то, что они позволяют найти кусок текста, соответствующий заданному шаблону.
Где они используются? Ну во-первых, они встроены в современные текстовые редакторы для написания кода и таким образом можно найти и заменять в тексте что угодно на что-то-то другое по вашему шаблону. Они используются для тех же целей во многих Unix-утилитах - например, grep или sed. Их поддерживают большинство современных языков программирования, и регулярные выражения можно использовать в вашем коде.
Синтаксис регулярных выражений имеет разные стандарты, и может незначительно отличаться в разных языках программирования и в консольных утилитах, поэтому чтобы не ошибиться наверняка, обращайтесь к документации того инструмента, которым вы сейчас пользуетесь.
Я же для начала расскажу о некоторых самых распространённых специальных символах, используемых в регулярных выражениях.
. (точка) - означает любой символ (букву, знак пунктуации, пробел или перенос строки). Например, регулярное выражение «к.т» найдёт в тексте слова «кот», «кит», «кiт», «к8т».
\n - означает новую строку
[] (квадратные скобки) позволяют указать, что в тексте встречается один из символов, указанных внутри скобок. Например, «к[ои]т» позволит нам найти все слова «кот» и «кит» в тексте.
Также есть символы, указывающие, сколько раз в шаблоне может повторяться какой-либо символ (или набор символов).
*
(звёздочка) - означает «сколько угодно повторений символа, стоящего перед ней». Сколько угодно, включая ноль. Например, возьмём регулярное выражение «кот!*». Оно означает, что мы ищем строку «кот» + какое угодно число восклицательных знаков после неё. Нам подойдут такие случаи, как «кот» (ноль знаков !), «кот!», «кот!!!!» и так далее.
+ (плюс) - похож на звёздочку, он означает сколько угодно повторений символа, но не менее 1 раза. «кот!+» - уже не найдёт строку «кот», так как в ней нет восклицательного знака.
? - означает, что какой-то символ встречается либо 0, либо 1 раз. Например, «https?::» - найдёт нам в тексте и «http::» и «https::».
Специальные символы можно комбинировать. Например, «к[ои]+т» - означает, один или более символов, указанных в скобках. Этот шаблон найдёт слова «кот», «кооот», «кит», «киоооит».
Это лишь небольшая часть символов, которые используются в регулярных выражениях, рассказала я о них для того, чтобы вы не боялись этой темы и дальше продолжили изучать её самостоятельно.
Главное - никогда не пытайтесь парсить html с помощью регулярных выражений.
676 viewsedited 16:04