2010-08-10 83 views
0

可能重複:
Extract text and links from HTML using Regular Expressions正則表達式從HTML中提取鏈接

給出一個包含HTML,如字符串:

 <td scope="row">1</td> 
     <td scope="row"></td> 
     <td scope="row"><a href="/Archives/directory.htm">directoryfile.htm</a></td> 
     <td scope="row">directoryfile</td> 
     <td scope="row">104569</td> 
    </tr> 
    <tr class="blueRow"> 
     <td scope="row">2</td> 
     <td scope="row"></td> 
     <td scope="row"><a href="/Archives/historicaldata.htm</a></td> 
     <td scope="row">historicaldata</td> 
     <td scope="row">40361</td> 
    </tr> 
    <tr> 
     <td scope="row">&nbsp;</td> 
     <td scope="row"><span class="blue">Complete submission text file</span></td> 
     <td scope="row"><a href="/Archives/businessagenda.txt</a></td> 
     <td scope="row">businessagenda;</td> 
     <td scope="row">146701</td> 

我只想抓住歷史的鏈接使用正則表達式的aldata。但是,似乎我的程序沒有找到鏈接,並且我沒有看到問題,因爲正則表達式在測試儀上工作。你們可以看看有什麼問題嗎?

我明白正則表達式不是使用HTML的最好的東西,但我只是想嘗試一下。感謝大家!

模式數據= Pattern.compile(「Archives。* \ s。* historicaldata」);
Matcher test1 = data.matcher(inputHTML); (test1.find()){

while(test1.find()){
System.out.println(「Test:Now matching」); //不打印
}

+4

鴨,在「ARRGGH!用正則表達式解析Html!」之前!人羣向你投擲一隻鞋。 – 2010-08-10 19:38:13

+1

太遲了,[鞋子已被拋出](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – NullUserException 2010-08-10 19:43:46

+2

我會看到你的「用正則表達式解析html」,並提出你「用於佈局的表格」,「爲顏色命名的css類」和「.htm而不是用文件名中的.html」 – 2010-08-10 19:46:18

回答

0

如果你只是想匹配的「檔案\ historicaldata」,那麼你的正則表達式的字符串應該是事實上 "Archives\/historicaldata"您可以使用"Archives/historicaldata"

0

在你圖案"Archives.*\s.*historicaldata"

Pattern data = Pattern.compile("Archives.*\s.*historicaldata"); 

\s裝置空格[1],並且由於不存在空白在"/Archives/directory.htm"它不匹配。儘量只

Pattern data = Pattern.compile("Archives.*historicaldata"); 

[1]「\ S」是不正確也 - 讓在你必須轉義反斜線,因此成爲模式。「檔案* \ S * historicaldata」