我需要找到一個正則表達式,它從html文檔中的表格單元格中提取一個值。正則表達式在網頁中查找值
此表單元格的示例內容爲「結果:40分鐘」。
我需要一個正則表達式來匹配實際的數字(40)。
這是在java中,在此先感謝。
我需要找到一個正則表達式,它從html文檔中的表格單元格中提取一個值。正則表達式在網頁中查找值
此表單元格的示例內容爲「結果:40分鐘」。
我需要一個正則表達式來匹配實際的數字(40)。
這是在java中,在此先感謝。
我試圖用正則表達式來做到這一點,它是一個痛苦的洞。
使用類似於XPath表達式的東西要容易得多,您可以通過它在DOM層次結構中的位置來指定位置。 Apache庫可以做到這一點(特別是Xalan),你可以在這裏找到:http://xml.apache.org/xalan-j/
你可以使用Firefox插件XPath Checker來幫你解決這個問題。
順便說一下,如果您正在尋找其他工具/信息,您所談論的區域就稱爲「網頁抓取」。
您想使用DOM/XPATH,但如果你真的需要的正則表達式簡單的情況下,再次嘗試
/\<\s*td[^\>]*\>\s*result: (\d+) mins\s*\<\/td\>/i
,將可能對大多數HTML工作,但正則表達式不會爲所有的HTML工作。
如果不是一次性情況,請使用XPath檢索某個HTML元素的內容(「結果:40分鐘」),然後使用一個簡單的正則表達式來獲取所需內容:"result: (\d+) mins"
(以適應OverClocked寫入的內容)。如果HTML(很可能)不正確,則可以使用類似JTidy的東西來清理它。
在最簡單的情況下,你可以簡單地尋找在整個頁面的表達:".*result: (\d+) mins.*"
順便說一句,你指着網頁不包含任何類型的「結果」:如果你換貨「路由」 ,你應該可以這樣做:
String pageContent = ...
Pattern p = java.util.regex.Pattern.compile("Route: ((\\d*) hour)*(\\d*) mins");
Matcher m = p.matcher(pageContent);
m.find();
System.out.println(m.group{1});
System.out.println(m.group{2});
這是太少的信息來建立任何種類的匹配規則。在大多數情況下,最好使用DOM解析器而不是正則表達式。 – 2010-03-06 16:31:19
我想刮這個頁面http://www.metazone.co.uk/tubemap/undergroundmap.php?st1=Acton%20Town&st2=Amersham – user169743 2010-03-06 16:38:34