用于HTML和非HTML URL的RegEx匹配

时间:2019-04-22 16:08:59

标签: html regex pcre

我正在尝试从此文本中获取所有网址。绝对和相对URL,但是我没有得到正确的正则表达式。这种表达方式结合了比我想要的更多的东西。您会收到我不想要的HTML标记和其他信息。

尝试

(\w*.)(\\\/){1,}(.*)(?![^"])

输入

<div class=\"loader\">\n       <div class=\"loaderImage\"><img src=\"\/c\/Community\/Rating\/img\/loader.gif\" \/><\/div>\n    <\/div>\n<\/div>\n<\/div><\/span><\/span>\n
   <a title=\"Avengers\" href=\"\/pt\/movie\/Avengers\/57689\" >Avengers<\/a>                                                                                                                        <\/div>\n         
<img title=\"\" alt=\"\" id=\"145793\" src=\"https:\/\/images04-cdn.google.com\/movies\/74932\/74932_02\/previews\/2\/128\/top_1_307x224\/74932_02_01.jpg\" class=\"tlcImageItem img\"  width=\"307\"   height=\"224\"  \/>
pageLink":"\/pt\/videos\/\/updates\/1\/0\/Category\/0","previousPage":"\/pt\/videos\/\/updates\/1\/0\/Category\/0","nextUrl":"\/pt\/videos\/\/updates\/2\/0\/Category\/0","method":"updates","type":"scenes","callbackJs"
<span class=\"value\">4<\/span>\n        <\/div>\n          <\/div>\n    <div class=\"loader\">\n       <div class=\"loaderImage\"><img src=\"\/c\/Community\/Rating\/img\/loader.gif\" \/><\/div>\n    <\/div>\n<\/div>\n<\/div><\/span><\/span>

Demo

1 个答案:

答案 0 :(得分:1)

如前所述,使用RegEx解决此问题可能并不是最好的主意。但是,如果您想练习或确实需要练习,则可以在URL存在的""之间进行精确匹配。您可以使用scrhref或任何其他可能的固定组件从左侧装订它们。您可以简单地使用 | 并将它们列出在第一组()中。

用于HTML URL的RegEx 1

This RegEx可能不是正确的解决方案,但它可能会给您一个视角,说明如何使用RegEx解决此问题:

(src=|href=)(\\")([a-zA-Z\\\/0-9\.\:_-]+)(")

它将创建四个组,以便简化更新,而$3组可能是您想要的URL。您可以在第三组中添加URL可能包含的所有字符。

enter image description here

用于HTML和非HTML URL的RegEx 2

要捕获其他非HTML网址,您可以像this RegEx一样对其进行更新:

(src=\\|href=\\|pageLink\x22:|previousPage\x22:|nextUrl\x22:)(")([a-zA-Z\\\/0-9\.\:_-]+)(") 

其中\x22代表,您可以将其替换。我刚刚添加了\x22,以便您可以看到那些 ,您的目标网址位于以下位置:

enter image description here

第二个RegEx也有四个组,其中目标组为$3。如果愿意,您也可以简化或DRY