|
|
www.lissyara.su
—> документация
—> EXIM
—> 4.62
—> часть 8
8. Регулярные выражения
Exim поддерживает использование регулярных выражений во многих своих опциях. Используется библиотека регулярных выражений PCRE; это обеспечивает совместимость регулярных выражений с perl5. Синтаксис и семантика регулярных выражений обсуждаются во многих книгах по perl, и также в Jeffrey Friedl’s Mastering Regular Expressions, изданной O’Reilly (смотрите http://www.oreilly.com/catalog/regex2/).
Документация о синтаксисе и семантике регулярных выражений включена в текстовом формате в файле “doc/pcrepattern.txt ” дистрибутива exim, а также в HTML тарболле (архив tar`a - прим. lissyara) документации exim. Там подробно описываются особенности поддержки регулярных выражений PCRE, таким образом нет необходимости включать дальнейшее описание тут. Функции PCRE вызываются из exim`a использованием дефолтовых опций настройки (т.е. без установленной опции PCRE), за исключением того, что опция “PCRE_CASELESS ” установлена, когда используется соответствие без учёта регистра.
В большинстве случаев, когда регулярные выражения требуются в конфигурации exim`a, они должны начинаться с крышки ( “^ ”), для того чтобы отличить их от простого текста, или заканчиваться “безразличным символом ”. В этом примере конфигурационных настроек, второй элемент в списке разделённом двоеточиями, - регулярное выражение.
domains = a.b.c : ^\\d{3} : *.y.z : ...
| Удвоение обратного слэша требуется, поскольку раскрытие строки предшествует интерпретации - смотрите раздел 11.1 для подробного рассмотрения этой темы, и способов не удваивать обратные слэши. Регулярное выражение, использующееся в этом примере, в конечном счёте содержит только один обратный слэш. Крышка включена в него, и её нормальный эффект - “постановка на якорь ” выражения в начале строки.
Однако, есть два случая, когда где крышка не требуется для распознания регулярного выражения: это условие “match ” в строке раскрытия и условие “matches ” в файле фильтра exim. В этих случаях, уместная строка всегда обрабатывается как регулярное выражение; если выражение не начинается с крышки, то оно не поствлено на якорь и может соответствовать в любом месте строки объекта.
Во всех случаях, если вы хотите, чтобы регулярное выражение совпадало с концом строки, вы можете использовать метасимвол “$ ” для указания этого. Например:
domains = ^\\d{3}\\.example
| совпадает с доменом “123.example ”, но также соответствует “123.example.com ”. Вам нужно использовать:
domains = ^\\d{3}\\.example\$
| если вы хотите чтобы “example ” был доменом высшего уровня. Обратный слэш перед “$ ” необходим, поскольку раскрытие строки также интерпретирует символ доллара.
8.1 Тестирование регулярных выражений
Программа называемая “pcretest ” является частью дистрибутива PCRE и собирается с PCRE в процессе сборки exim. После сборки exim`a бинарник может быть найден в директории где собирался exim (если она не проинсталлилась где-то автоматически). Существует документация для различных опций в “doc/pcretest.txt ”, но для одиночного теста она не требуется. Это - вывод образца запуска “pcretest ”:
re> /^([@]+)@.+\.(ac|edu)\.(?!kr)[a-z]{2}$/
data> x@y.ac.uk
0: x@y.ac.uk
1: x
2: ac
data> x@y.ac.kr
No match
data> x@y.edu.com
No match
data> x@y.edu.co
0: x@y.edu.co
1: x
2: edu
| Ввод пользователя показан жирным шрифтом. После подсказки “re> ”, ожидается регулярное выражение внутри разделителей. Если оно компилится без ошибок, даётся подсказка “data> ” напротив строки соответствующей выражению. Пустая линия приводит к чтению нового регулярного выражения. Если было успешной совпадение, показываются зафиксированные значения подстроки (то есть, что было бы в переменных 0 $, 1 $, 2 $, и т. д.). Вышеупомянутый пример проверяет на адрес электронной почты, домен которого заканчивается или “ac ” или “edu ”, сопровождаемым двухсимвольным вышестоящим доменом, который не “kr ”. Локальная часть находится в $1 и “ac ” или “edu ” в $2.
=============
translated by lissyara
Ссылка на обсуждение: http://forum.lissyara.su/viewforum.php?f=20.
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
|
Статистика сайта
|
Сейчас на сайте находится: 48 чел.
|
За последние 30 мин было: 194 человек
|
За сегодня было 2823 показов, 700 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|