2013-09-09 3 views
0

Прежде всего, я знаю, что разбор HTML с регулярным выражением является плохим. Но, к счастью, веб-сайт, который я извлекаю код, прост, поэтому я всегда получаю хорошие результаты, используя этот метод.Regex in java compile

Pattern p = Pattern.compile("(?<=<span class=\\\"itemName\\\">).*(?=</span>)"); 
Matcher m = p.matcher(code); 

Это должно вернуть то, что находится между тегом «itemname» и «тегом span». Нечто подобное:

PESCA INSOLITA 

Но, вместо этого, он возвращает:

PESCA INSOLITA</span></a><li><a href="/uy/synop... 

Что я делаю неправильно?

+1

* «Что я делаю неправильно?» * - Вы уже ответили, что - * «Я знаю, что разбор HTML с регулярным выражением плох» *. .. :-) –

ответ

3

Вы используете жадный помощник с вашим .*. Это приводит к тому, что совпадение соответствует всем тегам span в документе HTML. Вместо этого используйте .*? - или, еще лучше, используйте парсер ...

+0

Число символов, которые я хочу получить, нерегулярно. –

+1

@SebaPaz Я не понимаю, почему это было бы актуально. – chrylis