可能重复:
Extract text and links from HTML using Regular Expressions
给定包含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"> </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>
我想使用正则表达式获取历史数据的链接。但是,似乎我的程序没有找到链接,我没有看到问题,因为正则表达式适用于测试人员。你们能看出问题是什么吗?
我知道正则表达式不适合与HTML一起使用,但我只想尝试一下。谢谢大家!
模式数据= Pattern.compile(“Archives。* \ s。* historicaldata”);
Matcher test1 = data.matcher(inputHTML);
while(test1.find()){
System.out.println(“测试:现在匹配”); //不打印
}
答案 0 :(得分:0)
如果您只想匹配'Archives \ historicaldata',那么您的正则表达式字符串应该是
"Archives\/historicaldata"
实际上您可以使用"Archives/historicaldata"
答案 1 :(得分:0)
以您的模式"Archives.*\s.*historicaldata"
Pattern data = Pattern.compile("Archives.*\s.*historicaldata");
\s
表示空格[1],因为"/Archives/directory.htm"
中没有空格,所以它不匹配。试试吧
Pattern data = Pattern.compile("Archives.*historicaldata");
[1]“\ s”也不正确 - 要在模式中获取,你必须转义反斜杠,使其成为“Archives。* \ s。* historicaldata”