Я пытаюсь получить адрес с html-страницы. У меня есть регулярное выражение, из которого я узнаю состояние, город и номер телефона.Endless Loop matcher.find()
String linearray[] = newdoc.split("\n");
int count = 0;
System.out.println(linearray.length);
while(count<linearray.length)
{
System.out.println(count);
Pattern pattern = Pattern.compile("(.*?)(\\d{1,4}(\\s*\\w*)*)(\\s*)(CA|AZ|NY)(\\s*)(\\(?[1-9]\\d{2}\\)?\\s*\\d{3}\\d{4})?(.*?)");
Matcher matcher = pattern.matcher(linearray[count].trim());
while (matcher.find()) {
String state = matcher.group(5);
String city = matcher.group(2);
String phone = matcher.group(7);
System.out.println("state "+state+" city "+city+" phone "+phone+" ");
}
count++;
}
Когда я пытаюсь запустить этот код, он переходит в бесконечный цикл. Может ли кто-нибудь помочь мне в решении этого вопроса?
EDIT:
Когда linearray[count]=="Bombay Garden Newark SanMateo SantaClara © 2011 Bombay Garden All Rights Reserved"
, мой код застревает на линии while(matcher.find())
. Любая идея, почему он застрял там? когда я пропускаю эту строку (используя continue), код заканчивается просто отлично!
Вы уверены, что бесконечный цикл не находится в другой части вашего кода? Я скопировал ваш код, и он отлично работает (и заканчивается) для меня. –
Да, это в этой части кода, потому что я попытался напечатать что-то сразу после окончания второго цикла while, и он застревает до этого и ничего не печатает. – Nemin
Вы пробовали отлаживать его? – Adarsh