2015-09-25 6 views
0

Допустим, у меня есть доменRegex - исключить домен

@abc.com. 

Мне нужно, чтобы соответствовать образцу, если есть 3 или больше внешних получателей.

Например: Кому:

[email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; [email protected]

Регулярное выражение у меня уже есть выглядит следующим образом:

To:(.*@[^a][^b][^c][^.][^c][^o][^m].*){3,} 

Его вроде работает, но выглядит противно. Возможно каким-то образом реализовать это? ^(([email protected]).){3,}

Спасибо! Это помогло бы мне много

+0

Вы имеете в виду ['^ (? = (?:. * \ Bexternal) {3}). *'] (Https://regex101.com/r/uG2jV2/3)? –

ответ

1

Вы должны соответствовать:

  1. "@"
  2. не следует "abc."
  3. более символов до следующего "@"
  4. (1), (2) и (3) повторяется 3 раза

Это выражение будет соответствовать теме с 3 внешними Получатели л:

(?:@(?!abc[.]).*?){3} 

DEMO


Regular expression visualization

Он использует negative lookahead(?!abc[.]), чтобы проверить это не следует домена. .*? есть, чтобы использовать символы между разными @ s.

Вы также можете изменить abc[.] на abc[.]com(?:[; ]|$) или на ваш настоящий домен.

+0

Im тестирование ваших кодов на regexp.cz пока что ни один из них не работает .. испытательная строка: Кому: [email protected]; [email protected]; [email protected]; [email protected]; [email protected]; external @@contoso.com; [email protected]; [email protected]; после нажатия кнопки «GREP», результат должен совпадать, если есть больше внешних получателей. – Meky

+0

grep не поддерживает [lookaheads] (http: // regular-expressions.info/lookaround.html). Вы должны действительно указать свой язык программирования или скриптов, указав свой вопрос. Вы используете grep из командной строки? – Mariano

+0

Это ОТМЕНЕНО для постфикса, если число внешних получателей превышает n. Просто, чтобы быть ясным – Meky

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