Android - Matcher.find() бесконечный
Я реализовал AsyncTask, где регулярное выражение, предоставленное пользователем, используется для сопоставления огромных данных HTML-кода. Однако, поскольку некоторые из регулярных выражений содержат много квантификаторов / отслеживаний, Matcher.find() становится бесконечным.
Я попытался использовать InterruptibleCharSequence, представленные здесь: Как прекратить Matcher.find(), когда он работает слишком долго?, но кажется, что charAt никогда не вызывается, поэтому никогда не прерывается. Мое последнее предположение - создать новый процесс, просто чтобы запустить эту обычную процедуру сопоставления, а затем убить ее, когда поиск отменен. Однако у меня возникает проблема с разделением объектов между Service и Activity из-за разных процессов.
1 ответ
Разбор HTML с использованием RegEx - плохая идея, см.: Разбор HTML The Cthulhu Way
А как насчет анализа DOM вместо этого? Я попробовал jsoup некоторое время назад и нашел, что работать с ним довольно удобно.