2014-11-21 2 views
2

У меня есть журналы SMTP, и они разбиты на поля. Я изучаю поле TO и хотел бы видеть только журналы электронной почты, когда адрес TO НЕ *.com. Если есть несколько адресов и по крайней мере один не *.com, я бы тоже хотел это увидеть.Отрицательный взгляд вперед, чтобы не совпадать с конкретными * .TLDs

Мой синтаксис работает, когда есть только один адрес электронной почты, однако у меня возникают проблемы при наличии нескольких адресов электронной почты в линии TO с одним из них, содержащим «.com» или когда адрес имеет поддомены как mail.testnet.com Когда это Я бы все еще хотел увидеть файл журнала, если есть одна запись, которая НЕ *.com.

Есть ли способ написать это так, чтобы он совпал, если есть хотя бы один адрес, который не является *.com?

ТОК СИНТАКСИС

^((?!\.com).)*$ 

Работы по назначению

FAILSTO: <[email protected]>

переваловTO: <[email protected]>

ПРОПУСКАTO: <[email protected]>, <[email protected]>, <[email protected]>


не работает по назначению

FAILSTO: <[email protected]>, <[email protected]>, <[email protected]>, <[email protected]>

ПРОПУСКАTO: <[email protected]>

ПРОПУСКАTO: <[email protected]>, <[email protected]>

ответ

1

Используйте вложенную отрицательный взгляд вперед в позитивном взгляде вперед:

^(?=.*<[\w.][email protected]\w+\.(?!com)\w+>).* 

См demo

Это говорит «утверждают, существует точка следует нечто иное, чем„COM“»

+0

соответствует, если это не так, если адрес электронной почты содержит период (<[email protected]>). Это должно потерпеть неудачу, но оно проходит. Любые идеи, как исправить? Может быть, ухаживать за «@»? – user2661503

+0

Единственный случай, когда он НЕ должен совпадать, но есть, когда есть только несколько .com. Я пробовал <[email protected]>, <[email protected]>, и он соответствовал. – user2661503

+0

Это прекрасно! Я рассмотрю это по строчке, чтобы изучить это. Спасибо вам за помощь! – user2661503

Смежные вопросы