Образцы

<< Click to Display Table of Contents >>

Navigation:  Multi-Protocol MasterOPC Server > Руководство по языку Lua 5.1 > Библиотеки функций > Работа со строками >

Образцы

Образцы

mbul_mail Класс символов

mbul_mail Элемент образца

mbul_mail Образец

mbul_mail Захваты

Класс символов

Класс символов используется для представления набора символов. Следующие комбинации допустимы в описании класса символов:

mbul   x: (где x не является одним из вoлшeбныx символов ^$()%.[]*+-?) предстваляет сам символ x.

mbul   .: (точка) представляет все символы.

mbul   %a: представляет все буквы.

mbul   %c: представляет все управляющие символы.

mbul   %d: представляет  все цифры.

mbul   %l: представляет все строчные буквы.

mbul   %p: представляет все знаки пунктуации.

mbul   %s: представляет все символы пробела.

mbul   %u: представляет все прописные буквы.

mbul   %w: представляет все буквенно-цифровые символы.

mbul   %x: представляет все шестнадцатеричные цифры.

mbul   %z: представляет символ с представлением 0.

mbul   %x: (где x не является буквенно-цифровым символом) представляет символ x. Это стандартный путь замены вoлшeбныx символов. Перед любым знаком пунктуации (даже вoлшeбным) может быть ’%’, когда требуется указать сам знак в образце.

mbul   [set]: представляет класс, который является объединением всех символов в наборе. Диапазон символов может быть указан путем отделения последнего символа диапазона с помощью ’-’. Все классы %x, описанные выше, также могут быть использованы как компоненты в наборе. Все другие символы в наборе представляют самих себя. Например, [%w_] (or [_%w]) представляет все буквенно-цифровые символы плюс знак подчеркивания, [0-7] представляет восьмеричные цифры, а [0-7%l%-] представляет восьмеричные цифры плюс строчные буквы плюс символ ’-’.

Взаимодействие между диапазонами и классами не определено. Поэтому образцы наподобие [%a-z] или [a-%%] не имеют смысла.

mbul   [^set]: представляет дополнение набора, где набор интерпретируется как в предыдущем пункте.

Для всех классов, представленных одиночными буквами (%a, %c и т.д.), соответствующие прописные буквы представляют дополнение к классу. Например, %S представляет все символы, отличные от пробела.

Определения буквы, пробела и других групп символов зависит от локализации. В частности, класс [a-z] может не быть эквивалентным %l.

Элемент образца

В качестве элемента образца может выступать:

mbul   односимвольный класс, который совпадает с любым одиночным символом в классе;

mbul   односимвольный класс, после которого следует ’*’, который совпадает с 0 или большим количеством повторений символов в классе. Эти повторяющиеся элементы всегда удовлетворяют самой длинной возможной последовательности;

mbul   односимвольный класс, после которого следует ’+’, который совпадает с 1 или большим количеством повторений символов в классе. Эти повторяющиеся элементы всегда удовлетворяют самой длинной возможной последовательности;

mbul   односимвольный класс, после которого следует ’-’, который совпадаетс 1 или большим количеством повторений символов в классе. Эти повторяющиеся элементы всегда удовлетворяют самой короткой возможной последовательности;

mbul   односимвольный класс, после которого следует ’?’, который совпадает с 0 или 1 повторением символа в классе;

mbul   %n, где n между 1 и 9; этот элемент совпадает с подстрокой, равной n-ой захваченной строке (см. ниже);

mbul   %bxy, где x и y – два разных символа; такой элемент совпадает со строкой, которая начинается с x, заканчивается y, и в которой x и y сбалансированы. Это означает, что если читать строку слева направо, прибавляя +1 к x и -1 к y, завершающий y есть первый y, где счет достигает 0. Например, элемент %b() удовлетворяет выражению со сбалансированными круглыми скобками.

Образец

Образец – это последовательность элементов. ’^’ в начале образца указывает поиск совпадений с начала строки. ’$’ в конце образца указывает поиск совпадений с конца строки. В других позициях ’^’ и ’$’ не имеют специального смысла и представляют самих себя.

Захваты

Образец может содержать под-образцы, заключенные в круглые скобки, эти под-образцы описывают зaxвaты. Когда поиск совпадения успешен, подстроки анализируемой строки, которые удовлетворяют захватам, сохраняются для дальнейшего использования. Захваты нумеруются в соответствии со своей левой круглой скобкой. Например, в образце "(a*(.)%w(%s*))" часть строкового совпадения "a*(.)%w(%s*)" сохраняется как первый захват (и поэтому имеет номер 1); символьное совпадение "." – это захват номер 2, а часть совпадения "%s*" – захват номер 3.

В специальном случае, пустой захват () захватывает позицию текущей строки (число). Например, если мы применим образец "()aa()" к строке "flaaap", получим два захвата – 3 и 5.

Образец не может иметь вложенных нулей, используйте вместо этого %z.