LINUX.ORG.RU

Отрицание левой квадратной скобки в regex.


0

0

Я с/п regex блокирую прием почты с адресов с доменной частью вида
adsl12-34rt-56yt6-elki-palki.ru
Все замечательно работает, только оказалось, что данное специальное преобразование
блокирует и адреса, в доменной части которых содержится ip-адрес в квадратных скобках, т.е.
вида user@[1.2.3.4], хотя к таким адресам у меня претензий нет.

Мне нужно заматчить некую комбинацию цифр и букв, которая не должна начинаться с левой
квадратной скобки:
KADDR regex -aMATCH [^[][0-9].[0-9] матчит и [1.2 и 1.2

Поскольку [ -метасимвол, пробую экранировать его слэшем :
KADDR regex -aMATCH [^\[][0-9].[0-9] матчит и [1.2 и 1.2

или помещаю [ в квадратные скобки, что по мануалу также делает
из метасимвола обычный символ:
KADDR regex -aMATCH [^[[]][0-9].[0-9] не матчит ни [1.2 ни 1.2

Причем без отрицания устанавливается правильное соответствие:
KADDR regex -aMATCH [\[][0-9].[0-9] матчит и [1.2 и не матчит 1.2

Как же мне справиться с отрицанием [, что посоветуете?
Поиск по инету дал много интересной документации по regex, но нигде подробно не
рассматривается отрицание именно метасимволов.

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.