Как мне написать регулярное выражение в Java, которое учитывает контекст искомой строки? - PullRequest
0 голосов
/ 19 января 2010

Я хочу разобрать HTML-код и создать объекты из их текстового представления в таблице. У меня есть несколько столбцов, и я хочу сохранить контекст определенных столбцов в каждой строке. Теперь у меня есть HTML-код, и я понимаю, что должен использовать Pattern и Matcher для получения этих строк, но я не знаю, как написать требуемое регулярное выражение.

Это строка, которую я буду анализировать:

<tr><td><a href="delirium.htm">Delirium</a></td><td>65...</tr>

Итак, я хочу извлечь Бред из этой строки. Как мне написать регулярное выражение, которое говорит

найдите мне строку, которая находится между строкой htm"> и </a></td>

Ответы [ 2 ]

4 голосов
/ 19 января 2010

Это общий вопрос для SO, и ответ всегда один и тот же: регулярные выражения - плохой и ограниченный инструмент для анализа HTML, потому что HTML не является регулярным языком.

Вы должны использовать анализатор HTML , например Анализатор HTML .

Если вам интересно, что я имею в виду под «обычным языком», взгляните на JMD, Markdown и краткий обзор синтаксического анализа и компиляторов . В основном регулярное выражение - это DFA (детерминированный конечный автомат или детерминированный конечный автомат). HTML требует для анализа КПК (автомат). КПК - это DFA со стеком. Это то, как он обрабатывает рекурсивные элементы.

0 голосов
/ 19 января 2010
htm">(.+)</a></td>

Выполняет поиск любого символа (это бит .+), который находится между htm"> и </a></td> и возвращает промежуточное значение для использования с Pattern.matcher () (именно поэтому вокруг .+ стоят квадратные скобки)

http://www.regular -expressions.info / java.html

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