2013-12-07 71 views
1

我想從html頁面獲取地址。我有一個正則表達式,從中找出狀態,城市和電話號碼。無盡的循環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++; 
} 

當我嘗試運行此代碼時,它會進入無限循環。 任何人都可以幫助我解決這個問題嗎?

編輯:

linearray[count]=="Bombay Garden Newark SanMateo SantaClara &copy; 2011 Bombay Garden All Rights Reserved",我的代碼卡就行了while(matcher.find())。任何想法爲什麼它卡在那裏?當我跳過那一行(通過使用繼續),代碼終止就好了!

+1

你確定無限循環不在你的代碼的另一部分?我複製粘貼你的代碼,它運行良好(並正確終止)對我來說。 –

+0

是的,它在代碼的這一部分,因爲我試圖在第二個while循環結束之後打印一些東西,並且它在此之前被卡住並且不打印任何東西。 – Nemin

+0

你試過調試過嗎? – Adarsh

回答