Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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 从网页获取所有HTTP url_Java_Regex_Html Parsing_Href - Fatal编程技术网

Java 从网页获取所有HTTP url

Java 从网页获取所有HTTP url,java,regex,html-parsing,href,Java,Regex,Html Parsing,Href,我正在创建一个简单的实用程序来检索网页中的所有HTTP URL 最初我计划使用HTML解析库解析HREF标记,但我知道我也需要检索脚本中包含的URL(下面的示例脚本),因此我开始尝试使用正则表达式从网页中获取所有HTTP URL,但由于某些原因,我的正则表达式无法正常工作 URL可以位于javascript中 <script> if(jQuery.browser.msie) { var v= 'http://test.com/test/test'

我正在创建一个简单的实用程序来检索网页中的所有HTTP URL

最初我计划使用HTML解析库解析HREF标记,但我知道我也需要检索脚本中包含的URL(下面的示例脚本),因此我开始尝试使用正则表达式从网页中获取所有HTTP URL,但由于某些原因,我的正则表达式无法正常工作

URL可以位于javascript中

<script> 
    if(jQuery.browser.msie) 
    { 
        var v= 'http://test.com/test/test'; 
    } 
</script> 
有人能帮我解决这个问题,或者让我知道从网页中检索所有URL的最佳方法吗?

试试使用这个

\A'http:\/\/[\w\W]+'\z
这将检查您的url必须从
http://
开始,并且在开始和结束时是一个字符串,在url之间现在任何东西都可以出现,因此我们必须允许特殊字符,如
?:,-\u/\
以及数字等

因此,这将获得文件中存在的所有URL。

尝试使用此选项

\A'http:\/\/[\w\W]+'\z
这将检查您的url必须从
http://
开始,并且在开始和结束时是一个字符串,在url之间现在任何东西都可以出现,因此我们必须允许特殊字符,如
?:,-\u/\
以及数字等

因此,这将获得文件中存在的所有URL。

Description 你的表达有错误。它应该使
s
可选

https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?
    ^
我还建议:

  • 捕获组替换为非捕获组,如
    (?:
  • 您不需要在字符组内转义
    。]
  • 添加测试以确保您没有捕获url周围的右引号
  • 将查找
    /folder/subfolder
    节的节重写为重复的非捕获组,查找初始斜杠和文件夹名称
正则表达式:
https?:\/\/(?:[\w-]+)+(?::\d+)(?:\/[\w\/.]*)*?(?:\?\S+)(?=['“\S])

作为Java字符串:
“https?:\/\/(?:[\\w-]+)+(?:\\d+)(?:\/[\\w\\/\\\\/\\\.]*)*?(?:\?\\S+)(?=['\“\\S])”

例子

示例文本

<script> 
    if(jQuery.browser.msie) 
    { 
        var v= 'http://test.com/test/test'; 
    } 
</script> 
<a class="test" href="http://blablablablabla.com">Third Link</a>
描述 你的表达有错误。它应该使
s
可选

https?://([-\\w\\.]+)+(:\\d+)?(/([\\w/_\\.]*(\\?\\S+)?)?)?
    ^
我还建议:

  • 捕获组替换为非捕获组,如
    (?:
  • 您不需要在字符组内转义
    。]
  • 添加测试以确保您没有捕获url周围的右引号
  • 将查找
    /folder/subfolder
    节的节重写为重复的非捕获组,查找初始斜杠和文件夹名称
正则表达式:
https?:\/\/(?:[\w-]+)+(?::\d+)(?:\/[\w\/.]*)*?(?:\?\S+)(?=['“\S])

作为Java字符串:
“https?:\/\/(?:[\\w-]+)+(?:\\d+)(?:\/[\\w\\/\\\\/\\\.]*)*?(?:\?\\S+)(?=['\“\\S])”

例子

示例文本

<script> 
    if(jQuery.browser.msie) 
    { 
        var v= 'http://test.com/test/test'; 
    } 
</script> 
<a class="test" href="http://blablablablabla.com">Third Link</a>
:) :)