Регулярни изрази, Основи на Linux, Блог на любителите на експерименти

регулярни
Добро време, гости!

В днешната статия искам да засегна такава огромна тема като Регулярни изрази. Мисля, че всички знаят, че темата за регулярните изрази (както се наричат ​​регулярни изрази на жаргон) е огромна в обема на една публикация. Затова ще се опитам накратко, но възможно най-ясно да събера мислите си и да ви ги предам в моя блог.

Като начало има няколко вкуса на регулярните изрази:

1. Традиционни регулярни изрази (те също са основни, основни и основни регулярни изрази (BRE))

  • синтаксисът на тези изрази е определен за остарял, но въпреки това той все още е широко разпространен и се използва от много UNIX помощни програми
  • Основните регулярни изрази включват следните метасимволи (вижте техните значения по-долу):
    • .
    • []
    • [^]
    • ^
    • $
    • *
    • \ < \>- начална версия за < >(удължено)
    • \ (\) - оригинал за () (в разширение)
    • \ n, където n е число от 1 до 9
  • Характеристики на използването на тези метасимволи:
    • Звездичката трябва да следва израз, който съвпада с един символ. Пример: [xyz] * .
    • Изразът \ (блок \) * трябва да се счита за невалиден. В някои случаи тя съвпада с нула или повече повторения на блоковия низ. В други съвпада с линейния блок * .
    • В рамките на клас знаци специалните знаци обикновено се игнорират. Специални случаи:
    • За да добавите знак ^ към набор, той не трябва да се поставя първо там.
    • За да добавите символ - към набор, той трябва да бъде поставен там първи или последен. Например:
      • Модел на DNS име, който може да включва букви, цифри, минус и разделителни периоди: [-0-9a-zA-Z.];
      • всеки знак с изключение на минус и цифра: [^ -0-9] .
    • За да добавите символа [или] към набора, той трябва първо да бъде поставен там. Например:
      • [] [ab] съвпада], [, a или b .

2. Разширени регулярни изрази (те също са разширени регулярни изрази (ERE))

  • Синтаксисът за тези изрази е същият като за основните изрази, с изключение на:
    • Премахна използването на наклонени черти за метасимволи < >и () .
    • Обратна наклонена черта преди метасимвол отменя специалното му значение.
    • Отхвърлено теоретично нередовен строителство \ n .
    • Добавени са метасимволите +,?, | .

3. Регулярни изрази, съвместими с Perl (те също са съвместими с Perl регулярни изрази (PCRE))

  • имат по-богат и в същото време предсказуем синтаксис дори от POSIX ERE, поради което често се използва от приложенията.

След това нека поговорим малко за синтаксис на регулярния израз .

Регулярни изрази се състои от шаблони или по-скоро задайте шаблон Търсене. Шаблонът се състои на правила търсения, които са съставени от знаци и метасимволи.

Правила за търсене дефинирани от следното операции:

Изброяване |

Вертикалната лента (|) разделя валидните опции, можем да кажем - логично ИЛИ. Например "сив | сив" съвпада със сив или сив.

Групиране или обединяване ()

Скобите се използват за определяне на обхвата и приоритета на операторите. Например "сив | сив" и "gr (a | e) y" са различни модели, но и двата описват набор, съдържащ сиво и сиво.

Количествено определяне <>? * +

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

общ израз, повторения могат да бъдат от m до n включително.

общ израз, m или повече повторения.

общ израз, не повече от n повторения.

гладка n повторения.

Въпросителният знак означава 0 или 1 пъти, същото като . Например "colou? R" съвпада както с цвят, така и с цвят.

Звездичка означава 0, 1 или произволно число пъти ( ). Например "go * gle" съвпада с ggle, gogle, google и т.н.

Плюс означава поне 1 пъти ( ). Например „go + gle“ съответства на gogle, google и т.н. (но не и ggle).

Специфичният синтаксис за тези регулярни изрази зависи от изпълнението. (т.е. в основни регулярни изрази символите се избягват с обратна наклонена черта)