我正在使用正则表达式解析Java中的HTML文件,我想知道如何匹配所有href ="" not 的元素以.htm
或.html
结尾,如果匹配,则将引号之间的内容捕获到组中
这些是我迄今为止尝试过的:
href\s*[=]\s*"(.+?)(?![.]htm[l]?)"
href\s*[=]\s*"(.*?)(?![.]htm[l]?)"
href\s*[=]\s*"(?![.]htm[l]?)"
我理解,对于前两个,引号之间的整个字符串将被捕获到第一个组中,包括.htm
(l
)(如果存在)。
有谁知道我怎么能避免这种情况发生?
答案 0 :(得分:1)
作为旁边的答案,jsoup在处理html时是一个非常好的API。
使用jsoup:
Document doc = Jsoup.parse(html);
for(Element link : doc.select("a")) {
String linkHref = link.attr("href");
if(linkHref.endsWith(".htm") || linkHref.endsWith(".html")) {
// do something
}
}
答案 1 :(得分:1)
试试这个.*\.(?!(htm|html)$)
任何数字中的任何字符。*后跟一个点。没有跟着htm,htmt(?!...)
答案 2 :(得分:1)