首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用正则表达式匹配HTML中的url

正则表达式是一种强大的文本匹配工具,可以用于匹配HTML中的URL。HTML中的URL通常以<a>标签的href属性或<img>标签的src属性的形式存在。

下面是一个使用正则表达式匹配HTML中URL的示例:

代码语言:python
代码运行次数:0
复制
import re

def extract_urls_from_html(html):
    pattern = r"(?i)<a\s+(?:[^>]*?\s+)?href=(['\"])(.*?)\1"
    urls = re.findall(pattern, html)
    return [url[1] for url in urls]

html = """
<html>
<body>
<a href="https://www.example.com">Example Website</a>
<a href='https://www.example2.com'>Example2 Website</a>
<img src="https://www.example3.com/image.jpg" alt="Image">
</body>
</html>
"""

urls = extract_urls_from_html(html)
print(urls)

输出结果为:

代码语言:txt
复制
['https://www.example.com', 'https://www.example2.com', 'https://www.example3.com/image.jpg']

在上述示例中,我们使用了正则表达式模式(?i)<a\s+(?:[^>]*?\s+)?href=(['\"])(.*?)\1来匹配HTML中的URL。该模式的解释如下:

  • (?i): 表示忽略大小写。
  • <a\s+: 匹配<a标签,并允许在<a后面有多个空格。
  • (?:[^>]*?\s+)?: 匹配href属性之前的任意字符,直到遇到>符号。这部分内容是一个非捕获组,表示我们不需要提取这部分内容。
  • href=(['\"])(.*?)\1: 匹配href属性的值,其中(['\"])表示匹配单引号或双引号,并将其作为第一个捕获组,(.*?)表示匹配任意字符(非贪婪模式),并将其作为第二个捕获组。\1表示引用第一个捕获组中匹配到的引号,确保URL的开头和结尾使用相同类型的引号。

最后,我们使用re.findall()函数找到所有匹配的URL,并返回一个URL列表。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云CDN:提供全球加速、内容分发、缓存加速等功能,适用于静态资源加速、动态加速、点播加速等场景。详细信息请参考腾讯云CDN产品介绍
  • 腾讯云对象存储(COS):提供安全、稳定、低成本的云端存储服务,适用于图片、音视频、文档等各种类型的文件存储和管理。详细信息请参考腾讯云对象存储(COS)产品介绍

请注意,以上仅为示例推荐,实际选择云计算产品应根据具体需求和情况进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 正则表达式在密码强度匹配使用

    一、背景   今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样感觉(哈哈,三分钟搞定,今天又可以打鱼了)。...=pattern) :正向预测先行搜索 名字看着高大上,不明所以,看完示例大概明白什么意思,这个表达式匹配从这个表达式起始字符串(我也不知道咋解释),就是假设这样一个表达式abc(?...=[abc])只会对作用于后面的123,这个显然是不匹配后整个就不匹配了,然后关键来了名字里有预测两个字,这两个字表名了这个表达式特性:不占用字符,匹配后如果匹配成功就继续匹配了好像从来不存在这个东西一样...,匹配失败就立即返回失败了。...pattern) :反向预测先行搜索 概念和上面一样,但是效果是相反,abc(?[abc]),对于abc123是匹配成功,对于abca匹配失败,如下所示: reg = /abc(?!

    3.9K30

    HTML网页巧用URL

    编程执行环境处理完毕后将结果返回给Web服务器,Web服务器再将结果返回给浏览器,从而达到网页内容动态化目的。 通过上述分析我们可以知道,如果使用http://remotehost/*.htm?...这时我们就可以在网页利用Location.href属性获得附加了信息内容URL串,经过适当处理后就可以得到所附加信息内容字段名称及其取值,再通过浏览器支持DHTML特性进行处理,就可以实现网页内容动态化...我们也可以看出,通过这种方式达到网页动态交互目的即使是在浏览器实现也仍然摆脱不了Web服务器支持,否则浏览器将把“?...注意: querystring.js是一个实用程序,它可以在网页中直接引用,然后在网页中使用Request[“名称”]即可获取用户输入有关信息内容。...该作者就是通过这种途径在只支持纯HTML主页空间建立了一个相当不错动态图片查看器 所以,各位,实践下咯。

    1.7K20

    PHP正则表达式及模式匹配

    PHP对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)正则表达式模式匹配功能函数集....当前实现对应于perl 5.005.);另一个是POSIX方式。 PCRE函数库函数使用模式语法非常类似perl. 表达式必须用分隔符闭合, 比如一个正斜杠(/)....PCRE模式修正符 i (PCRE_CASELESS)  如果设定此修正符,模式字符将同时匹配大小写字母。...S 当一个模式需要多次使用时候, 为了得到匹配速度提升, 值得花费一些时间 对其进行一些额外分析. 如果设置了这个修饰符, 这个额外分析就会执行....参考资料: 1、preg_match_all截取body正则表达式 2、PHP正则表达式匹配多行及模式匹配 3、PHP Manual PCRE模式 @import url(http://www.cnblogs.com

    2.9K20

    html链接不添加http(协议相对 URL

    HTML,如果想引用图片,通常会使用类似以下URL: https://www.fgba.net/static/image/common/logo.png 如果将以上URL改成这样,你觉得图片还能正常显示吗...如果当前页面是通过HTTPS协议来浏览,那么网页资源也只能通过HTTPS协议来引用,否则IE浏览中就会出现"页面同时包含安全和非安全项目"警告信息: 如果使用协议相对 URL,无论你是使用...HTTPS,还是HTTP访问页面,浏览器都会以与你相同协议请求页面资源,避免弹出这样警告信息,同时可以节省5字节数据量,何乐而不为呢?...//www.fgba.net 我们也可以在css中使用协议相对 URL: //www.fgba.net/static/image/common/logo.png 需要注意是:在IE7 / IE8,...使用 或者 @import 来引用样式表时,会出现样式表文件被下载两次情况。

    2.2K00

    正则表达式来了,Excel正则表达式匹配示例

    显然,可以使用正则表达式。 用于匹配字符串Excel VBA正则表达式函数 要在Excel中使用正则表达式,需要创建自己函数。...如何使用正则表达式在Excel匹配字符串 当所有要匹配字符串都具有相同模式时,正则表达式是理想解决方案。...匹配一个单元格字符串 要匹配单个单元格字符串,在第一个参数引用该单元格,第二个参数包含一个正则表达式。...要仅允许空格,使用[-\.]而不是[-\.\s]。 正则表达式匹配字符 若要查找不包含特定字符字符串,可以使用与括号以外任何内容匹配否定字符类[^]。...幸运是,可以使用我们自定义函数模拟此功能。 假设使用了一个正则表达式匹配电话号码,并在列B输出结果。要找出有多少单元格包含电话号码,只需要计算单元格区域B5:B9TRUE值。

    21.2K30

    AntPathMatcher路径匹配器,Ant风格URL

    正则表达式(regular expression):描述了一种字符串匹配模式(pattern),可以用来检查一个串是否含有某种子串、将匹配子串替换或者从某个串取出符合某个条件子串等。...举个例子:在自定义登录过滤器,经常会放行一些API接口让免登录即可访问,这是典型URL白名单场景,这个时候就会涉及到URL匹配方式问题,一般会有如下方案: 精确匹配url.equals("/api...这个缺点比较明显:强依赖于URL书写规范(如白名单URL都必须包含指定子串),并且极易造成误伤 正则表达式匹配:Pattern.compile("正则表达式")..matcher(url).find...Ant风格和正则表达式都有它们场景最佳实践: Ant风格:用于URL/目录这种标准分段式路径匹配 正则表达式:用于几乎没规律(或者规律性不强)普通字符串匹配 AntPathMatcher:基于Ant...匹配成功,但“多余”部分和pattern并不匹配最终结果也会是false(如结果3,4) *:匹配任意数量字符 因为是匹配任意数量字符,所以一般使用*来代表URL一个层级 @Test public

    10.4K116

    正则表达式:.Net Framework平衡组递归匹配搜索源码函数方法({}匹配)

    https://blog.csdn.net/10km/article/details/52230558 有时候,我们需要用正则表达式来分析一个计算式符号配对情况。...比如,使用表达式 “\( [^)]* \)” 或者 “\( .*? \)” 可以匹配一对小括号。...目前并不是所有的正则表达式引擎都具备了递归匹配功能,根据网上一些资料得到信息是目前只有Perl,PHP,GRETA,还有.Net Framework提供了此项功能。...匹配“3+2^((1-3)*(3-1))”“((1-3)*(3-1))” 如果要匹配java代码一个方法。。。上面的表达式要稍微修改下。...{},这个表达其实是有隐含缺陷:如果""字符串包含了不匹配{},这个表达式是无法匹配

    1.4K20

    ThinkPHP5 对html页面url传参操作

    https://blog.csdn.net/u011415782/article/details/79164995 ◆ 背景 毕竟PHP开发框架多数都会和前端页面嵌套使用,而不同框架升级多少都会有所变化...Route::any('cms/article/edit/:id','cms/article/edit'); ◆ 操作 §. html 嵌入方式 这种情况,一般是 form表单页面提交形式,直接在属性..."action" 中进行配置,此时可以将参数以数组参数形式进行添加,如下: method="post" action="{:url('cms/article/edit',['id'=>$todayWordData.id...,'tag'=>'test'])}" 那么页面的显示效果如下: 要注意所生成URL参数变化,其与路由配置有关 ?...§. js 嵌入方式 这种情况下多数是绑定点击事件,需要在 当前页面的 js 下配置数组参数 可是使用js提供替换函数replace(),举例如下 //菜单修改按钮点击事件 function editNavMenu

    2.1K30

    Java正则表达式匹配日期及基本使用

    +m.end()); } } 正则表达式语法 在 Java ,\\ 表示:我要插入一个正则表达式反斜线,所以其后字符具有特殊意义。...也可以简单理解在 Java 正则表达式,两个 \\ 代表其他语言中一个 \,这也就是为什么表示一位数字正则表达式是\\d,而表示一个普通反斜杠是 \\\\。...可以使用 $0…$9 属性从结果"匹配"集合检索捕获匹配。若要匹配括号字符 ( ),请使用"\("或者"\)"。 (?...允许在正则表达式使用 ASCII 代码。 \num 匹配 num,此处 num 是一个正整数。到捕获匹配反向引用。例如,"(.)\1"匹配两个连续相同字符。...因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。

    5.5K41
    领券