Правила подстановки сопоставляют исходный адрес с шаблоном, и если обнаружено соответствие, адрес переписывается в новом формате по правилам преобразования.
Адрес может обрабатываться правилом подстановки несколько раз, поскольку после переписывания адрес снова сравнивается с шаблоном. Если соответствие вновь обнаружено, адрес переписывается повторно. Цикл сопоставления с шаблоном и переписывания продолжается, пока адрес не перестанет соответствовать шаблону.
Шаблон определяется посредством макроопределений, классов, литералов и специальных метасимволов. Макроопределения, классы и литералы используются в качестве значений, с которыми сравниваются исходные данные, а метасимволы задают правила сравнения с шаблоном. В табл. 10.3 описаны метасимволы, используемые для поиска по шаблонам. Таблица 10.3. Метасимволы шаблонов
Символ | Значение |
$@ | Нулевое количество лексем |
$* | Нуль или более лексем |
$+ | Одна или более лексем |
$- | Ровно одна лексема |
$=X | Любая лексема из класса х |
$~x | Любая лексема не из класса х |
$x | Все лексемы из макроопределения х |
$%X | Любая лексема из карты NIS, обозначенной макроопределением х1 |
$!x | Любая лексема не из карты NIS, обозначенной макроопределением х |
$%y | Любая лексема из карты NIS hosts.byname |
Каждый метасимвол предписывает поиск определенного числа лексем. Лексема - это строка символов в адресе электронной почты, ограниченная оператором. Операторами являются символы, указанные в параметре OperatorChars. Операторы также считаются лексемами при разборе адреса. Следующий адрес электронной почты:
Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
содержит семь лексем: becky, @, rodent, ., wrotethebook,. , а также com. Этот адрес соответствует шаблону поиска:
$-§$+
Адрес соответствует шаблону, потому что:
- в нем ровно одна лексема перед оператором то есть выполняется требование метасимвола $-;
- в нем присутствует оператор соответствующий литералу шаблона
- после оператора @ в адресе присутствует одна или более лексем, то есть выполняется требование метасимвола $+.
- Назад
- Вперёд >>