Регулярни изрази, Основи на 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).
Специфичният синтаксис за тези регулярни изрази зависи от изпълнението. (т.е. в основни регулярни изрази символите се избягват с обратна наклонена черта)