Android-регулярное кодирование - PullRequest
0 голосов
/ 28 октября 2011

Я загружаю исходный код сайта с помощью HttpClient, а затем хочу извлечь некоторые данные с помощью регулярных выражений. К сожалению, сайт закодирован в iso-8859-1, что, кажется, вызывает проблемы. Вот пример кода для загрузки сайта:

HttpGet query = new HttpGet(url);
HttpResponse queryResponse = httpClient.execute(query);
String queryText = EntityUtils.toString(queryResponse.getEntity()).replaceAll("\r", " ").replaceAll("\n", " ");

А потом выражение:

Pattern patter = Pattern.compile("<p class=\"qt\">(.*?)</p>");
Matcher matcher = pattern.matcher(queryText);
while (matcher.find()) // do something

Проблема в том, что в нем отсутствуют некоторые случаи, когда есть специальные символы iso-8859-1. (.*?) похоже не соответствует им. В чем причина этой проблемы? Как мне это исправить?

1 Ответ

1 голос
/ 28 октября 2011

Вы уверены, что это связано со "специальными символами iso-8859-1", а не с символами новой строки?. не соответствует терминаторам строки по умолчанию.Вы можете использовать флаг DOTALL , чтобы включить сопоставление с разделителями строк.например:

Pattern patter = Pattern.compile("<p class=\"qt\">(.*?)</p>", Pattern.DOTALL);
...