Попробуйте:
(Fake)?Email: *([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4}))
И захваченная группа \1
будет пустой, если это реальное электронное письмо, и будет содержать "Поддельное", если это поддельное электронное письмо, тогда как \2
будет само электронное письмо.1006 *
Вы действительно хотите захватить это, если это FakeEmail
хотя?Если вы хотите захватить все Email
, но игнорировать все FakeEmail
, выполните:
\bEmail: *([_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4}))
Граница слова не позволяет биту Email
соответствовать "FakeEmail".
ОБНОВЛЕНИЕ : обратите внимание, что ваше регулярное выражение соответствует только нижнему регистру, так как оно есть a-z
в []
везде, но не [A-Z]
.Убедитесь, что вы вводите свое регулярное выражение в функцию соответствия Java с помощью переключателя игнорирования регистра.т.е.:
Pattern.compile("(Fake)?Email: .....", Pattern.CASE_INSENSITIVE)