2.1 Съпоставяне на символи

Повечето букви и символи просто ще съвпадат със самите себе си. Например, регулярният израз "test" просто и точно ще съвпада със символния низ "test". (Можете да включите режим, нечувствителен към разликата между малки и големи букви, който ще позволи на този РИ да съвпадне също така и с "Test" или "TEST". Но повече за това -- по-късно.)

Има изключения от това правило -- някои символи са особени и не съвпадат със самите себе си. Вместо това те сигнализират, че трябва да паснат с нещо необикновено, или чрез повторение те се отразяват на някои други части от РИ. Голяма част от този документ е посветена на обсъждането на различни метасимволи и тяхното действие.

Ето един пълен списък на метасимволите; тяхното значение ще бъде обсъдено в останалата част от това КАК-ДА:

. ^ $ * + ? { [ \ | ( )
Първият метасимвол, на който ще обърнем внимание е "[". Той се използва за определяне на клас от символи, представляващ набора от символи, които искате да използвате за съвпадение. Символите могат да бъдат изброявани индивидуално или един диапазон от символи може да бъде обозначен чрез два символа и разделител "-". Например, [abc] ще пасне с всички символи "a", "b", или "c"; това е същото както [a-c], където се използва диапазон, за да изрази същия набор от символи. Ако искате да пасне с която и да е малка буква от латинската азбука, вашият РИ би трябвало да бъде [a-z].

Метасимволите не са активни вътре в класовете. Например [akm$] ще пасне с всеки от символите "a", "k", "m", или "$"; "$" обикновено е метасимвол, но вътре в класа от символи той е лишен от особената си природа.

Допълвайки набора, можете да пасвате символи, които не са в дадения диапазон. Това се посочва чрез добавянето на "^" като първи символ от класа. Поставен където и да е другаде, "^" просто ще съвпада със символа "^". Например, [^5] ще пасне с всеки символ, с изключение на "5".

Може би най-важният метасимвол е обратно наклонената черта, "\". Както и при символните низове в Питон, обратно наклонената черта може да бъде последвана от различни символи за да се обозначат различни специални последователности. Тя също се използва и за да се избегнат всички метасимволи така че все пак да можете да ги използвате за съпоставка в образци. Например, ако искате да съвпаднете "[" или "\", те трябва бъдат предшествани от обратно наклонена черта за да се премахне специалното им значение: \[ или \\.

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

\d
Пасва с всяка десетична цифра; това е еквивалент на класа [0-9].
\D
Пасва с всеки символ, който не е цифра; това е еквивалент на класа [^0-9].
\s
Пасва с всеки празен символ; това е еквивалент на класа [ \t\n\r\f\v].
\S
Пасва с всеки не-празен символ; това е еквивалент на класа [^ \t\n\r\f\v].
\w
Пасва с всеки буквеноцифров символ; това е еквивалент на класа [a-zA-Z0-9_].
\W
Пасва с всеки не-буквеноцифров символ; това е еквивалент на класа [^a-zA-Z0-9_].

Тези последователности могат от своя страна да бъдат включвани в класове от символи. Например, [\s,.] е клас от символи, който пасва с всеки празен символ, или "," или ".".

Последният метасимвол в този раздел е .. Той пасва с всичко, освен със символа за нов ред. Но съществува и алтернативен режим, (re.DOTALL), при който той ще пасне дори със символ за нов ред. "." се използва често там, където искате да пасне който и да е символ.