2014-01-09 37 views
0

此代碼太奇怪了不工作:Pattern和Matcher是Android的

String description = Pattern.compile("<div.*?>(.*?)</div>", Pattern.DOTALL).matcher(html).group(1); 

此代碼工作:

Pattern pdescription = Pattern.compile("<div.*?>(.*?)</div>", Pattern.DOTALL); 
Matcher mdescription = pdescription.matcher(html); 
if (mdescription.find()) { 
    String description = mdescription.group(1); 
} 

爲什麼我需要聲明兩個對象? logcat中寫道:

01-09 21:33:06.741: E/AndroidRuntime(1734): FATAL EXCEPTION: Thread-150  
01-09 21:33:06.741: E/AndroidRuntime(1734): java.lang.IllegalStateException: No successful match so far  
01-09 21:33:06.741: E/AndroidRuntime(1734):  at java.util.regex.Matcher.ensureMatch(Matcher.java:607)  
01-09 21:33:06.741: E/AndroidRuntime(1734):  at java.util.regex.Matcher.group(Matcher.java:358)  
01-09 21:33:06.741: E/AndroidRuntime(1734):  at com.ibelieve.news.SearchEngine.Baidu.GetNews(Baidu.java:45)  
01-09 21:33:06.741: E/AndroidRuntime(1734):  at com.ibelieve.news.MainActivity$2$1.run(MainActivity.java:52)  
01-09 21:33:06.741: E/AndroidRuntime(1734):  at java.lang.Thread.run(Thread.java:856) 

回答

0

在你還沒有嘗試找到任何東西的第一個例子。

As stated in the docs for group:

IllegalStateException - 如果沒有匹配尚未嘗試,或者以前的匹配操作失敗

+0

有點明白了,謝謝 – lhking