Метасимволи - HTML, CSS, JavaScript, Perl, PHP, MySQL

Във всички примери за такива действия откъси от текста съвпадащи с шаблона маркирана. Не забравяйте, че линията се нарича изпълнение на съответната структура, ако поне част от този модел. Като подчертава, показва каква част от една и съща.

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

прост заместващ

Първата маска - точка във вътрешността на регулярен израз точка съвпада с всеки отделен знак с изключение на нов ред (.). Така например, в модела /p.t/ точка означава всеки символ. Този модел съответства на дума гърнето, Пат, ямата, килим, Python и pup_tent. Точка замества само един символ. Затова думите ап и се очаква моделът не е подходящ, тъй като първата дума между символа р и Т не е символ, а вторият - твърде много знаци.

без видими знаци

По-рано сте научили, че за да бъдат включени в регулярен израз общ заместител буквално преди това е необходимо да се постави обратно наклонена черта, а след това маска ще загубят своите магически сили:

Ако преди конвенционален символ да се постави обратно наклонена черта, тя се превръща в метасимволът. Както вече знаете от втори клас ", Perl е Building Blocks: Телефонните номера и Strings", някои от героите в низовете имат специално значение, ако има наклонена черта пред тях. Почти всички от тях имат същото значение в регулярните изрази, както е показано в таблицата. 6.1.

quantifiers

До момента имаме само разглежда случаят, когато един модел характер, съответстващ на един символ на ред. Например, шаблон / Simon / символ съответства на S S, и съответства /, т и т съответства т.н. Quantifiers - мета-символи, използвани за обозначаване на количествени отношения между героите в модела и в низа за търсене. Квантор могат да бъдат доставени след един символ или група от символи, след като (за групи скоро ще се говори).

Най-простият квантор е метасимволът +. Това означава, че върви пред него символ съответства на няколко такива знаци в низ за търсене на последователни. Брой знаци може да бъде всеки (по-голям, колкото е възможно в рамките на съответстващия образец), но трябва да бъде най-малко един символ. Така шаблона / направи + г / са:

Действие * маска е подобен на действие +. * Метасимволът показва, че характерът ходене пред него се открива нула или повече пъти. С други думи, на модел / т * / ще търси последователни писма тон, но ако няма такива герои, търсене все още ще се счита за успешно, т.е. регулярен / кола * т / воля.

Още по-ограничен обхват на този знак. Предходни характер трябва да се получи нула или едно и също време (но не повече). Например, моделът / C? Ola / това означава, че буквата с може да се случи веднъж или изобщо не се срещат. Този модел съвпада с всеки низ, съдържащ Ола знаци, като например кола.

Разликата между заместващи символи. и * е, че, например, модел / C? Ola / мача и Ола, и от кола, но не ccola. Допълнителна писмо от мача не е включена в зоната. Модела / C * Ola / ще съвпадне и кола, и Ола и ccola, защото за разлика от предишния модел на съвпадението е позволил на неограничен брой последователни писма с.

Ако възможни метасимвола + *. не е достатъчно за вас, моля, използвайте фигурните скоби <> да се уточни точно брой повторения:

Тук н - минималната допустима брой повторения, м - максималния брой повторения, потупване - символ или група от символи, който показва броя на повторенията. Един от параметрите, п или м може да се пропусне, но не и двете едновременно! Виж примери:

В регулярни изрази, често се използва идиом. *. Тя отговаря на нещо, например в шаблона / на първо място. * Последно / - е всеки от героите, които са между двете думи. Според по-горе модел, Perl опитва да намери думата първо. текст зад него и думата последен. Виж например шаблона за действие в следните направления:

Обърнете добър поглед към третия ред. Модела мач започва, както се очакваше, с думата включва думата съвпадение firstDalee последната и текст към следващата дума накрая. Не трябва да има маска * Четвърто правило е описано в "Правилата на играта": е най-дългата линия, все още отговаря търсения модел. В случаите, в които искате да отмените ефекта от това правило, че е необходимо да се възползват от възможността на минималната съвпадение в Perl. За повече информация по този въпрос, вижте помощната страница perlre на.

класове характер

Друг често срещан проблем е използването на регулярни изрази - търсене, които съответстват на някое герой от определен набор. За да търсите номера е добре да има един модел, който съвпада с някоя цифра, за да търсите поименния тип VonBeethoven фон Бетовен или идват по-удобен шаблон "или V, или V".

В Perl регулярни изрази това е на разположение. Това е т.нар класове символи. класове символи са затворени в квадратни скоби []. По време на търсенето, всички герои в класа се третират като един символ. В рамките на класа на знака може да бъде определен диапазон (когато редица има значение), поставянето на тире между преливане. Таблица. 6.2 показва някои примери.

Последният пример е най-интересното. Тя може да се види, че в рамките на часовете по характер Повечето метасимвола губят своята стойност и се превръщат в обикновени знаци. Затова * - това е просто буквално.

Ако първият символ е карета клас G, стойността на израза е обърнат. С други думи, този клас съвпада с всеки символ не в класа, като например:

От класа герои], * и - да има специално значение, за използването им в класната стая, има някои правила. Буквално "не трябва да бъде първокласен символ преди буквално] трябва да бъде наклонена черта, например, / [абв \]] / да бъдат поставени в класа на тирето .. (-) е достатъчен, или да го постави на първо място, или сложи пред него символ на обратна връзка наклонена черта.

В Perl, има съкращения на някои често използвани класове. Всички тези намаления се състои от наклонена черта, последвано от nemetasimvola, както е показано в таблицата. 6.3.

Ето някои примери:

Но бъдете внимателни! Последно модел не винаги е начинът, като долна черта на характера, заобиколен от пространства, също ще се счита за кратко. Освен това, не всички думи ще бъдат открити с помощта на последния модел, но само тези, които са заобиколени от пространства. В този случай, думи като не, няма да бъдат намерени, защото на апостроф. По-долу ще бъдат предложени много по-добър модел за думите за търсене.

Групирането и редуване

За някои от шаблоните могат да се комбинират в един регулярен израз, така че намери низ да съответства най-малко един от тях. Това е полезно, ако, например, за да се провери линията за наличие на кучетата думите или котки. За да се реши този проблем е работата на редуване, който се помещава в често използван символ |, например:

Алтернанс - vesh полезни, но не винаги е удобно, ако трябва да се намери голям брой подобни думи. Да предположим, че трябва да се намери един от жаба думи, блато, влезте, бият, или запушват и изразяване / жаба | блатото | вляза | шиба | запушват / изглежда твърде тромава. След това трябва да се използва само в промяната да започне линията. Можете да се опитате да използвате този шаблон:

С помощта на този шаблон няма да може да се постигне не знам до необходимия резултат, тъй като Perl, че редуване отношение на началната част на линията. За да се реши този проблем, трябва да използвате групата Perl регулярни изрази със скоби символа

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

В контекста на списък на модел за съвпадение оператор връща списък на намерените части от изрази, които съответстват на шаблона. Всяка група се връща на съответната стойност от списъка, а ако групи в шаблона не е - просто се връща 1. Ето един пример:

В този случай, моделът съответства на произволна последователност от символи (е зададено като първа група), зад която е пространството, дума е друго пространство и след друга произволна последователност от символи (е зададено като втора група). Стойностите на низа за търсене, съответстващи на групите от регулярните изрази са възложени на елементите на списък fruiti цвета на $ $, разположени от лявата страна на оператора за присвояване.

Последните две метасимволите (Обзалагам се, че си мислиш, "Когато най-накрая се изчерпи?!") - това котви. С тяхна помощ, можете да посочите къде в низ (в началото или в края), трябва да се намери според шаблона.

Първият от тези котви - точката на вмъкване (^). Този символ ^ имоти в началото на регулярния израз, твърдят, че съвпадение модел могат да се намерят в началото на линията. Например, / ^ видео / съответства на дума видеото, но само ако е в началото на линията.

Неговата двойна - символ долар ($). Този символ се поставя в края на регулярен израз, заяви, че съвпадение модел могат да се намерят в края на линията. Например, / земята $ / съвпада с пръст начин, но само ако това е в края на линията. По-долу са няколко примера (виж Таблица 6.4.).