Regex Java Первая буква не входит в правильную группу? - PullRequest
0 голосов
/ 26 марта 2012

Я изучаю регулярные выражения и не могу понять группировку в Java. В настоящее время мое регулярное выражение

([^:]?)(?![email])(\w+[\. ]?\w+)\ ?\@[\. ]?(\w+\.?\w+)\.edu

Моя цель - извлечь адреса электронной почты, которые бывают разных форматов. Пример строки строки, которая не работает с этим:

To get on the vcode mailing list, please email engler@lcs.mit.edu.

Мое выражение соответствует правильной строке, но

group(1) = e
group(2) = ngler

Что я хочу, это

group(2) = engler

Работает для других строк, таких как href = "mailto: balaji@stanford.edu">

Спасибо, что нашли время помочь мне. Кстати, я использую http://www.regexplanet.com/advanced/java/index.html, чтобы помочь мне, он преобразует выражения регулярных выражений в те, которые Java понимает, и показывает вам группировки.

Спасибо, Афе

Ответ: ([^:]?) \ B (?! (Электронная почта)) \ b (\ w + [.]? \ W +) \? \ @ [. ]? (\ w +.? \ w +). Эду, я не знал, что это лечили персонажи, спасибо.

Ответы [ 3 ]

1 голос
/ 26 марта 2012

Вместо этого попробуйте это регулярное выражение:

([^:]?)(?<=email\s)(\w+[\. ]?\w+)\ ?\@[\. ]?(\w+\.?\w+)\.edu

Я изменил «Отрицательный взгляд» на «Позитивный взгляд», потому что вы хотите утверждать, что символы email (с пробелом - я добавил \s для этого) должен предшествовать совпадению.

Я также убрал скобки [] из email, так как это совпадало с любым символом из слова email и разбивало ваши группы (как указано @Affe и@phatfingers) * * 1 010

1 голос
/ 26 марта 2012

Выражение [электронная почта] является классом символов. оно соответствует любой из букв e, m, a, i или l. Это не соответствует слову «электронная почта». Это было бы просто электронное письмо без скобок. Вот почему он берет e в английском.

0 голосов
/ 26 марта 2012

Довольно хорошее описание захвата адресов электронной почты с помощью регулярного выражения можно найти здесь: Как найти или проверить адрес электронной почты

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...