Python正则匹配含/不含mydomainname.com的URL
正确匹配目标URL的正则方案
正则表达式
r'(https?://[^"\s]*mydomainname\.com[^"\s]*|/[^"\s]+)'
代码示例
import re # 示例HTML内容 html_content = """ <a href="https://mydomainname.com/page1.html">Link 1</a> <img src="/pathout_themes/pathology_outlines/images/logo_for_social.jpg" alt="Logo"> <a href="https://www.mydomainname.com/path/subpage?param=val">Link 2</a> <script src="/js/main.js"></script> """ # 编译正则并匹配 pattern = re.compile(r'(https?://[^"\s]*mydomainname\.com[^"\s]*|/[^"\s]+)') matches = pattern.findall(html_content) # 输出匹配结果 for match in matches: print(match)
表达式拆解说明
https?://[^"\s]*mydomainname\.com[^"\s]*:负责匹配带mydomainname.com的绝对URLhttps?://:兼容http/https两种协议开头[^"\s]*:匹配任意非引号、非空格的字符,避免捕获超出HTML属性范围的内容mydomainname\.com:转义.确保匹配实际域名,防止.被当作通配符
/[^"\s]+:负责匹配根路径开头的相对URL/:锁定根路径起始的相对路径格式[^"\s]+:捕获所有非引号、非空格的路径字符,保证完整获取路径
|:逻辑或,同时兼容两种URL类型的匹配
注意点
- 该正则默认URL处于HTML属性的引号包裹场景(如
src="..."或href="..."),如果URL存在其他上下文,可调整[^"\s]部分的限制规则 - 支持匹配包含
&、=等特殊字符的URL,因为[^"\s]包含除引号、空格外的所有合法URL字符
内容的提问来源于stack exchange,提问作者YoYoYo
相关产品推荐
相关产品推荐

