Пълно ръководство за правилата на Regex: какво представляват, как работят и практически примери

  • Правилата за регулярни изрази ви позволяват да търсите, валидирате и трансформирате текст ефективно.
  • Синтаксисът му използва буквални символи, метасимволи и квантификатори, за да дефинира точни модели.
  • Regex е от съществено значение в програмирането, системната администрация, SEO и разширеното редактиране на данни.

Пример за правила за регулярни изрази

Регулярните изрази, известни като Regex, представляват един от най-мощните и универсални ресурси в света на разработката, системната администрация и обработката на големи обеми текст. Въпреки това, за много потребители и програмисти, които се запознават с него за първи път, синтаксисът му може да бъде загадъчен или дори объркващ. Овладяването на правилата и шаблоните на Regex позволява търсене, филтриране, валидиране и трансформиране на текст с несравнима ефективност и гъвкавост.

Чудили ли сте се някога как можете да намирате сложни модели в документи, да валидирате формуляри, да трансформирате данни или да автоматизирате процесите на търсене във вашите ИТ проекти? Независимо дали сте разработчик, системен администратор или просто любопитен потребител, тази статия е за вас. Пригответе се за пълно, практично и най-вече ясно ръководство за правилата на Regex и тяхното приложение във всякакви контексти.

Какво представляват правилата на Regex или регулярните изрази?

Регулярни изрази (Regex, съкращението му на английски език от Регулярен израз) са поредици или модели от символи, способни да дефинират правила за намиране, валидиране или манипулиране на текстове в други текстове. Представете си, че търсите конкретни фрази, специфични формати (като имейли, дати, телефонни номера), имена, които отговарят на определени критерии, или искате да замените части от текста наведнъж: във всички тези случаи, Regex е идеалният инструмент.

Основната идея е Опишете, с поредица от символи, букви и специални оператори, шаблона, на който трябва да отговаря текстът, който искаме да локализираме, валидираме или модифицираме.Например, ако искате да намерите всички числа във фраза, можете да дефинирате прост шаблон, който гласи „всеки числов символ“ (като \d). Ако искате нещо по-сложно, можете да изградите правила, сложни като: „всички низове, които започват с „Копие“ и завършват с число.“

Синтаксис на регулярни изрази

История и еволюция на Regex

Регулярните изрази са се зародили в средата на 20-ти век в областта на формалната логика и теорията на автоматите. Първото му практическо приложение е било в UNIX-базирани системи, с помощни програми като ed, Впиши, жажда y AWKВпоследствие стандартът POSIX разшири синтаксиса си и го включи в множество среди. По-късно езикът Perl изведе Regex на ново ниво, добавяйки нови функции и популяризирайки ги в общността на разработчиците.

В настоящето, Regex е вграден в повечето езици за програмиране (JavaScript, Python, Java, C#, PHP, Ruby и др.), както и усъвършенствани текстови редактори, операционни системи, уеб рамки и множество помощни програми за команден ред. Това прави правилата на Regex наистина универсален език за обработка на текст във всеки компютърен контекст.

За какво са правилата за Regex?

Правилата за регулярни изрази не са само за търсене; те също така валидират, извличат, трансформират и филтрират или променят големи обеми от данни за секунди.

  • Намиране на закономерности в големи текстове: Намирайте имейли, URL адреси, имена, числа, дати и други – дори в огромни файлове или бази данни – без ръчни усилия.
  • Валидиране на потребителския вход: Проверява дали паролата отговаря на изискванията, телефонният номер или имейл адресът са правилни, преди да ги съхрани.
  • Промяна и замяна на текст: Заменете конкретни части от текст, от премахване на HTML тагове до нормализиране на формати на данни.
  • Автоматизирайте процесите: Филтрирайте лог файлове, трансформирайте списъци, анализирайте лог файлове или преименувайте файлове масово според много точни правила.

Основи на регулярните изрази: Основни понятия

Правилата за регулярни изрази са съставени от комбинация от буквални символи и метасимволи. Разбирането на тези елементи е основата за изграждане на полезни шаблони.

1. Буквални знаци

Буквалният символ представлява точно символа, който искате да търсите. Например, изразът Casa ще локализира точно тази последователност, в този ред, в целевия текст.

2. Метасимволи: силата на Regex

Метасимволите са специални символи, които разширяват значението на регулярните изрази, придавайки им гъвкавост и мощ. Най-често срещаните включват:

  • . Точката представлява всеки символ, с изключение на знака за нов ред.
  • [] Скобите определят класове или набори от разрешени символи.
  • ^ Циркумфиксът може да маркира или началото на ред/дума, или, ако е ограден в скоби, отрицанието на множество.
  • $ Символът за долар показва края на ред или текст.
  • * Звездичката ви позволява да търсите „нула или повече повторения“ на предишния елемент.
  • + Знакът плюс търси „едно или повече повторения“.
  • ? Показва, че предишният елемент е незадължителен (нула или еднократно).
  • () Скобите групират части от израз, за ​​да приложат квантификатори, да извлекат подгрупи или да дефинират алтернативи.
  • | Вертикалната черта представлява логическа алтернатива „или“.
  • \ Обратната наклонена черта избягва специалното значение на следващия символ или въвежда съкратени последователности (като например \d, \w, \s).

3. Квантификатори: контролиране на повторението

Квантификаторите ви позволяват да дефинирате колко пъти трябва да се повтори даден символ, клас или група:

  • *Нула или повече повторения.
  • +Един или повече пъти.
  • ?Веднъж или никак (по избор).
  • {н}Точно така n повторения.
  • {n,}: Поне n пъти (без максимум).
  • {n,m}: Между n y m повторения.

4. Класове символи и съкращения

Класовете на символите ни позволяват допълнително да стесним това, което искаме да търсим:

  • [az]: всяка малка буква.
  • [AZ]главна буква.
  • [0-9]: всяка цифра.
  • [abc]буквата a, b или c.
  • [^xyz]: произволен символ с изключение x, i z.
  • \d: десетична цифра (еквивалентна на [0-9]).
  • \D: всеки символ, който Не. да бъде цифра.
  • \w: символ на думата (буква, цифра или долна черта; еквивалент на [a-zA-Z0-9_]).
  • \W: всеки символ, който не е дума.
  • \s: бяло пространство (интервал, табулация, нов ред).
  • \S: всеки символ, различен от интервал.

5. Котви: поставяне на шаблона в текста

Котвите ви позволяват да поставяте шаблони в началото или края на реда, или в началото/края на думите.

  • ^: начало на ред или текст.
  • $край на реда или текста.
  • \b: граница на думата (начало или край).
  • \B: гранична точка, която не е дума (вътрешна).

Практически примери за правила за Regex

Нека сега разгледаме как тези правила се прилагат в реални сценарии, както прости, така и напреднали, за да можете бързо да приложите наученото на практика.

  • Валидиране на имейли: ^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,6})+$
  • Намерете DNI номера: \b\d{8}[- ]?[trwagmyfpdxbnjzsqvhlcke]?\b
  • Откриване на IP v4 адреси: ^(?:(?:25[0-5]|2[0-4]\d|1?\d?\d)(?:\.(?!$)|$)){4}$
  • Извличане на URL адреси от HTML тагове:
  • Откриване на коментирани редове в Java: //[^\r\n]*[\r\n]

Разширена логика и персонализиране на шаблони

Regex ви позволява да изграждате сложни модели, като комбинирате групи, алтернативи, препратки и усъвършенствани квантификатори, което ви позволява да филтрирате, валидирате или локализирате много специфична информация.

Групи и асоциации

Като заграждаме част от шаблона в скоби, създаваме група. Това ни позволява да прилагаме квантификатори към цели групи, да извличаме информация или да правим препратки към подшаблони.

Например, изразът ((ма)+б) ще съвпада с „mab“ или „mamab“, но не и с „maab“. Групите могат да бъдат препратени по-късно чрез \1, \2и др., идеални за намиране на подобни повтарящи се модели.

Алтернативи (|): логическо „или“ в Regex

Вертикалната лента | ви позволява да дефинирате алтернативи: всеки от шаблоните, разделени от този символ, ще бъде валиден. Например, (момче|момиче) ще съвпадне и с двете думи.

Избягвайте метасимволи с \

Обратната наклонена черта \ Изключително важно е да се неутрализира специалното значение на метасимвола или да се въведат съкратени последователности. Например, „\.“ търси буквална точка, „\?“ – въпросителен знак, „\\“ – обратна наклонена черта и т.н.

Алчни и мързеливи квантификатори

По подразбиране, квантификаторите на Regex са алчни: те приемат колкото е възможно повече текст. Добавяне ? Променя се на „мързелив“, което обхваща необходимия минимум.

Например: куче ще намери най-дългия низ между „perr“ и „o“, докато куче ще улови минимума.

Твърдения и заобикалящи анализи

Твърденията за предварително и последно търсене ви позволяват да валидирате условия „преди“ или „след“ съвпадение, без да консумирате символи от текста.

  • Положителен поглед напред: (?=модел) Проверете дали „шаблон“ се намира след текущата позиция.
  • Отрицателен поглед напред: (?!модел) Проверете дали „шаблон“ НЕ присъства по-долу.
  • Положителен/Отрицателен поглед назад: (?<=шаблон) y (? Те правят същото „наобратно“.

Практически приложения на Regex в реалния свят

Regex се използва в голямо разнообразие от области и ежедневни задачи:

  • Валидиране на формуляримейли, телефонни номера, имена, силни пароли.
  • Обработка на лог файлове и системен одитТърсене на модели в лог файлове, извличане на грешки и предупреждения.
  • SEO и управление на URL адресиПренаписване на URL адреси в .htaccess, филтри по параметри, сегментиране на търсенето.
  • Групово редактиране на текстПочистване на HTML тагове, премахване на излишни интервали, нормализиране на данни в електронни таблици, адаптиране на стар код.
  • Уеб разработка и автоматизацияавтоматизирано тестване, конфигуриране на сървърни правила, разработка на скрепер.

Различни видове и двигатели на Regex

Не всички Regex имплементации поддържат едни и същи възможности; има различни „вкусове“ в зависимост от използвания език, инструмент или енджин.

  • POSIX: Първичен синтаксис, базиран на UNIX. По-малко обширен от Perl или PCRE.
  • Perl/PCRE: Много пълни, те поддържат търсене по околните обекти, разширени препратки, модификатори и подпрограми.
  • javascript: Широко използван в мрежата, съвместим с повечето оператори, но има ограничения в lookbehind (с изключение на съвременните версии).
  • .NET и други езици: Те обикновено са съвместими с PCRE, но винаги е препоръчително да се консултирате със собствената документация на езика.

Следователно, винаги когато ще работите в специфичен контекст, проверете каква поддръжка и синтаксис приема Regex в този инструмент или език.

Как да тествате и изграждате свои собствени Regex модели

Най-добрият начин да научите Regex е да практикувате с примери и да използвате инструменти за тестване на живо, достъпни в интернет.

  • regex101.com: позволява ви да пишете модели, да проверявате резултати, да преглеждате обяснения и статистика за производителността.
  • regexr.comстрахотни опции за помощ стъпка по стъпка, визуална графика и интерактивни примери.
  • Визуални обяснители и генератори на кодИдеален за разбиране на сложни модели и генериране на изрази от нулата.
  • Онлайн игри и практикиУчете се, като играете и решавате реални предизвикателства, за да интернализирате как работи Regex.

Често срещани грешки и практични съвети за овладяване на Regex

Regex е мощен, но може да бъде и объркващ. Тези съвети ще ви помогнат да избегнете често срещани капани:

  • Ескейп метасимволи когато търсите буквалната му стойност. Например, използвайте \. за точката, \* за звездичката, \? за разпит.
  • Не прекалявайте с употребата на точка (.) и заместващия знак .*. Те са много полезни, но могат да върнат нежелани резултати, ако не дефинирате добре шаблона си.
  • Добавете котви (^, $), когато искате да ограничите шаблона до началото или края на реда и избягвайте частични съвпадения.
  • Използвайте специфични квантификатори при търсене на точни повторения, вместо да разчитате единствено на * или +.
  • Винаги опитвайте с положителни и отрицателни примери. По този начин можете да откриете дали моделът покрива всички необходими случаи, без да се получават фалшиви положителни резултати.
  • Разделяй и владей: Ако имате много сложен модел, изградете го на части и комбинирайте фрагментите накрая.
  • Чувствайте се свободни да разгледате шпаргалки, документация и форуми. за да видите примери и ежедневни трикове.

Интегриране на Regex в езици за програмиране и инструменти

Regex е интегриран в най-често срещаните функции на всички основни езици за програмиране. Някои примери:

  • javascript: Методи тест(), exec() на обекта RegExp и методите мач(), Търсене(), замени (), разделяне () на String.
  • питон: Модулът re предоставя функции като Търсене(), мач(), findall(), под()И др
  • PHP: функции preg_match(), preg_replace(), preg_split() и други
  • .NET: клас Регулярно изражение с усъвършенствани методи и PCRE поддръжка.

В редактори като VSCode, Sublime, Atom или Notepad++, можете също да използвате Regex за търсене и заместване. А в UNIX системи, помощни програми като Впиши, жажда y AWK вграждат собствен Regex енджин.

Regex в SEO и управление на URL адреси

Regex е ключов компонент за оптимизация на URL адреси, уеб маршрутизиране и динамично управление на параметри в платформи като WordPress, Joomla и електронна търговия.

  • .htaccess и mod_rewrite: Те ви позволяват да трансформирате грозни, пълни с параметри URL адреси в удобни адреси с Regex правила. По този начин, www.ejemplo.com/index.php?p=123 може да се трансформира в www.ejemplo.com/articulo/titulo-amigable, което подобрява както SEO, така и потребителското изживяване.
  • Филтриране на параметри: Извличайте, почиствайте или трансформирайте параметри в URL адреса, за да адаптирате резултатите към различни контексти на търсене.

Използвайки правилата на Regex, уеб администраторите могат да създават шаблони за пренаписване, които идентифицират и променят компонентите на URL адресите, за да подобрят структурата, оптимизацията и разбирането от търсачките и потребителите.

Разширени регулярни изрази: техники и ресурси

Regex не само поддържа директно търсене; той поддържа условно групиране, подпрограми, рекурсия, обратни препратки и много други. Това го прави важен инструмент за сложни задачи.

  • Подпрограми и обратни препратки: Те ви позволяват да намерите повтарящи се модели, симетрии, последователности и много специфични валидации.
  • Условни условия: Изпълнете различни търсения или валидации въз основа на това, което е било заснето в предишни групи.
  • Рекурсия: Някои усъвършенствани двигатели ви позволяват да дефинирате шаблони, които се отнасят за самите себе си, което е много полезно при обработка на структурирани данни като XML или JSON.
  • Глобални модификатори: (/g, /i, /m в Perl/JavaScript) позволяват глобално, безразлично към главни и малки букви или многоредово търсене.

Основни ресурси за изучаване на Regex

Ако искате да разширите знанията си, тези ресурси ще ви бъдат полезни:

  • Уикипедия: Подробни теоретични и технически обяснения.
  • Regular-Expressions.info: Справки и уроци за всички нива.
  • Шпаргалки: Кратки обобщения на всички най-често срещани оператори, групи и правила.
  • Интерактивни уроци: Директна практика с упражнения и незабавна обратна връзка.
  • Общности и форуми: Учете се от други потребители, задавайте въпроси и споделяйте личните си съвети.

Изучаването на Regex предлага голямо предимство при управлението и обработката на текст, позволявайки по-ефективно търсене, валидиране, трансформации и автоматизация. С постоянство и практика, писането на регулярни изрази става по-лесно и по-естествено. Възползвайте се от онлайн инструменти и практически упражнения, започнете с прости примери и преминете към по-сложни модели. След като усвоите принципите му, Regex ще се превърне в естествено допълнение към вашия арсенал за разработка и системна администрация, улеснявайки задачи, които преди може да са ви се стрували сложни или досадни.


Добавяне като предпочитан източник