2016-08-16 3 views
0

Я ищу некоторую помощь по регулярному выражению. Я хотел бы, чтобы совпадение было там, где имя пользователя (т. Е. Все до знака @) адреса электронной почты включает в себя слово привет, а также письмо a. Итак, пример:regex, чтобы соответствовать по имени пользователя по электронной почте

// matches 
[email protected] 
[email protected] 

// does not match 
[email protected] 

Я по-прежнему новичок в регулярном выражении, поэтому указатели и объяснения оценены.

+1

Может прочитать [учебник] (http://www.regular-expressions.info/email.html)? –

+0

до сих пор я пытался «^. *? (? = @)» Соответствовать началу строки, любому символу 0 или более раз, пока следующий символ не был @, чтобы сначала получить что-либо перед знаком @. Мой план состоял в том, чтобы настроить это, чтобы получить то, что я хочу, но это, похоже, не работает, поэтому я застрял и нуждаюсь в указателях. –

+1

[Это] (https://developers.google.com/edu/python/regular-expressions#emails-example) - довольно хороший ресурс, который я нахожу себе снова и снова. Конкретная часть, на которую я ссылался, обсуждает синтаксический анализ адресов электронной почты. Он не будет делать то, что вы хотите, но я рекомендую взглянуть на это и вернуться с любыми изменениями, которые вы сделали. –

ответ

0

Помимо языка, вы можете использовать положительные lookaheads (мы надеемся) утверждать, что имеются оба вхождения hello и a в поле имени:

(?=[^@]*hello)(?=[^@]*a).+ 

Что соответствует:

[email protected] 
[email protected] 
[email protected] 
... 
+0

это отлично, я подключился к regex101 для объяснения каждого элемента. Благодаря! –

0

Если вы уверены, что ваш адрес электронной почты будет состоять только из необязательного a и hello затем использовать этот запрос:

^(a(hello)@|(hello)[email protected]) 

Demo с объяснением

+0

Спасибо, это очень полезно, хотя мне хотелось бы найти что-то вроде [email protected], поэтому я не был достаточно явным в своем вопросе –

+0

Хорошо, не беспокойтесь. Удачи! – streetturtle

0

Еще один вариант для тех, кто приходит через это в будущем. Если вы хотите совместить другой набор символов, отличный от a, тогда замените a в регулярном выражении желаемым символом.

(a.*)@|(.*a.*)@

[email protected] # matches abchello in group 
[email protected] # matches helloabc 
[email protected] # no match 
[email protected] # no match 
[email protected] # no match 
Смежные вопросы