Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:匹配所有不以.htm结尾的字符串;_Java_Html_Regex_String Parsing - Fatal编程技术网

Java:匹配所有不以.htm结尾的字符串;

Java:匹配所有不以.htm结尾的字符串;,java,html,regex,string-parsing,Java,Html,Regex,String Parsing,我正在使用正则表达式解析Java中的HTML文件,我想知道如何匹配不是以.htm或.HTML结尾的所有href=”“元素,如果匹配,则将引号之间的内容捕获到一个组中 到目前为止,我已经尝试了以下几点: href\s*[=]\s*“(.+?)(?![.]htm[l]?)” href\s*[=]\s*”(.*?(![.]htm[l]?)” href\s*[=]\s*“(?![.]htm[l]?)” 我知道,对于前两个,引号之间的整个字符串被捕获到第一个组中,包括.htm(l)如果它存在的话 有人知道

我正在使用正则表达式解析Java中的HTML文件,我想知道如何匹配不是以
.htm
.HTML
结尾的所有href=”“元素,如果匹配,则将引号之间的内容捕获到一个组中

到目前为止,我已经尝试了以下几点:

href\s*[=]\s*“(.+?)(?![.]htm[l]?)”

href\s*[=]\s*”(.*?(![.]htm[l]?)”

href\s*[=]\s*“(?![.]htm[l]?)”

我知道,对于前两个,引号之间的整个字符串被捕获到第一个组中,包括
.htm
l
)如果它存在的话

有人知道如何避免这种情况发生吗?

作为一个附带的回答,在处理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
    }
}
作为附带的回答,在处理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
    }
}
作为附带的回答,在处理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
    }
}
作为附带的回答,在处理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
    }
}
试试这个
*\(?!(htm | html)$)

任意数字中的任意字符。*后跟一个点。后面不跟htm,htmt(?)

试试这个
*\(?!(htm)$)

任意数字中的任意字符。*后跟一个点。后面不跟htm,htmt(?)

试试这个
*\(?!(htm)$)

任意数字中的任意字符。*后跟一个点。后面不跟htm,htmt(?)

试试这个
*\(?!(htm)$)


任意数字中的任意字符。*后跟一个点。后面不跟htm,htmt(?)

您只需重新排列表达式,并在捕获之前将负片向前移动:

href\s*[=]\s*"(?!.+?[.]htm[l]?")(.+?)"

是一个演示。

您只需重新排列表达式,并在捕获之前将负片向前移动:

href\s*[=]\s*"(?!.+?[.]htm[l]?")(.+?)"

是一个演示。

您只需重新排列表达式,并在捕获之前将负片向前移动:

href\s*[=]\s*"(?!.+?[.]htm[l]?")(.+?)"

是一个演示。

您只需重新排列表达式,并在捕获之前将负片向前移动:

href\s*[=]\s*"(?!.+?[.]htm[l]?")(.+?)"

是一个演示。

是否要捕获htm和html文件?是否要捕获htm和html文件?是否要捕获htm和html文件?是否要捕获htm和html文件?很遗憾,这是一个学校作业,我不允许使用任何此类库!:-(我明白。正如我所说,这只是一个旁白:)祝你的家庭作业好运。不幸的是,这是一个学校作业,我不允许使用任何这样的图书馆!:-(我明白。正如我所说,这只是一个旁白:)祝你的家庭作业好运。不幸的是,这是一个学校作业,我不允许使用任何这样的图书馆!:-(我明白。正如我所说,这只是一个旁白:)祝你的家庭作业好运。不幸的是,这是一个学校作业,我不允许使用任何这样的图书馆!:-(我明白。正如我所说,这只是一个附带的回答:)祝你的家庭作业好运。