Как извлечь данные из следующих с помощью RegEx? - PullRequest
0 голосов
/ 22 октября 2010

У меня есть набор данных по следующей схеме

1<a href="/contact/">Joe</a><br />joe.doe@somemail.com</div>
2<a href="/contact/">Tom</a><br />tom.cat@aol.com</div>
3<a href="/contact/">Jerry</a><br />jerry.mouse@yahoo.co.in</div>

Так далее ...

Мне нужно извлечь из него только имя и идентификатор электронной почты. Как мне это сделать?


Обновление:

На основании ваших ответов я изменил формат данных на:

1(name)Joe(email)joe.doe@somemail.com(end)
2(name)Tom(email)tom.cat@aol.com(end)
3(name)Jerry(email)jerry.mouse@yahoo.co.in(end)

Как мне разобрать , что ?

Ответы [ 3 ]

1 голос
/ 23 октября 2010

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

\(name\)(.*)\(email\)(.*)\(end\)

Теперь первая обратная ссылка \1 содержит имя, а вторая обратная ссылка \2 содержит адрес электронной почты.

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

1 голос
/ 23 октября 2010

Если вам гарантировано, что это будет стандартный шаблон для всех ваших записей, вы можете просто использовать String.split () в каждой строке, используя регулярное выражение (. *?) В качестве шаблона разделения.Это будет соответствовать (за ним следует минимально возможное число других символов, за которым следует другой).Итак, код выглядит примерно так:

//for each String line
String[] items = line.split("\\(.*?\\)");
name = items[0];
email = items[1];
1 голос
/ 22 октября 2010

Не используйте регулярные выражения для разбора HTML .

Использовать анализатор HTML.На этой странице есть список .Исходя из моего опыта использования Tidy , я бы предложил JTidy .Со своей страницы:

JTidy - это порт Java для HTML Tidy, средство проверки синтаксиса HTML и симпатичный принтер.Как и его двоюродный брат, не являющийся Java, JTidy может использоваться как инструмент для очистки искаженного и дефектного HTML .Кроме того, JTidy предоставляет интерфейс DOM для обрабатываемого документа , который позволяет эффективно использовать JTidy в качестве анализатора DOM для реального HTML.

ОБНОВЛЕНИЕ

Исходя из правки вашего вопроса, используйте split(), чтобы разбить строку с \([a-z]+\) в качестве разделителя.Это должно дать вам отдельные компоненты:

String[] components = str.split("\\([a-z]+\\)");

Или вы можете использовать более общее выражение \(.*?\).

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