LINUX.ORG.RU
ФорумAdmin

Исключение в регулярном выражении?

 ,


0

1

Ребята, подскажите.

Как заложить в этом выражении

/(modem|dia(l|lup)|cp[ce]|dsl|p[cp]p|cable|catv|poo(l|les)|pppoe|dhcp|client|customer|user|[0-9]{4,})(-|_|\.|[0-9])/

исключение

bsf.026430010.co.il

Как правильно сделать что бы на bsf.026430010.co.il сервер, не срабатывало?

Спасибо!


Регулярка и так здоровенная, ты уверен что хочешь ее раздувать еще больше? Может добавить исключение как-нибудь отдельно?

morse ★★★★★
()

Разбери эту всратую регулярку на набор более вразумительных и больше так не делай. Как вариант какой нибудь генератор парсеров примени.

anonymous
()
Ответ на: комментарий от morse

Можно её отформатировать в несколько строк с отступами по группам.

Pravorskyi ★★★
()
Ответ на: комментарий от morse

Вот тут можно проверить как она ловит это

https://planetcalc.ru/708/

Это с почтового сервера, postfix. Работает отменно это выражении, всякий хлам из диалапа ловит аж бегом. Три реджект и бан через fai2ban ...

Тут просто ребята назвали свой сервер как провайдеры клиентов. В постфиксе не лазя остановить проверку, она дойдет до конца и не пустит сервер если эту строку не убрать ...

macik
() автор топика
Ответ на: комментарий от morse

Да, цифры и попадают.

Проверь беглый анализ с двух почтовых серверов. Данное правило срабатывает крайне редко. Пока убрал [0-9]{4,} ... Думаю что не будут проскакивать ботовское отребье.

Пока наблюдаю.

macik
() автор топика

в этом выражении

Это 3.14-здец, а не регулярка!

исключение

Так оно по твоей регулярке и не должно отлавливаться, лол.

r3lgar ★★★★★
()

Как правильно сделать что бы на bsf.026430010.co.il сервер, не срабатывало?

оператор группирования (круглая скобка) умеет исключение

PexuOne
()

Если в лоб, то как-то так:

^(?=.*(modem|dia(l|lup)|cp[ce]|dsl|p[cp]p|cable|catv|poo(l|les)|pppoe|dhcp|client|customer|user|[0-9]{4,})(-|_|\.|[0-9]))(?!bsf\.026430010\.co\.il).*

Но это не очень шикарное решение.

Deleted
()
Последнее исправление: Rainor (всего исправлений: 1)
Ответ на: комментарий от anonymous

Автор не показал из какого файла это выражение. По моему такие вставляют в

check_client_access regexp

Тогда ему надо так:

/bsf\.026430010\.co\.il/ OK

Bootmen ☆☆☆
()
Ответ на: комментарий от Bootmen

Автор не показал из какого файла это выражение. По моему такие вставляют в

Извениет, Как то пропустил

block_dsl = regexp:/etc/postfix/config/block_dsl

/bsf\.026430010\.co\.il/ OK

Это вариант не сработает, все равно дайте до последнего правила и заблокирует ...

macik
() автор топика
Ответ на: комментарий от macik

block_dsl = regexp:/etc/postfix/config/block_dsl

Странный параметр для постфикса. Не встречал.

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