Python正则表达式如何排除含问号的字符串,匹配无?的带/l/的链接?
问题原因分析
你写的正则没有限定匹配完整的链接字符串,仅会匹配/l/之后到第一个问号之前的内容,所以即使链接整体带问号,也会命中局部匹配规则,导致你误以为匹配到了带问号的链接。
可行解决方案
因为你已经提前筛选出了所有HTTP链接,直接使用以下正则即可匹配同时包含/l/、且整个链接无问号的完整URL:
import re pattern = re.compile(r'^[^?]*/l/[^?]*$')
规则说明:
^匹配链接字符串的开头[^?]*匹配0个或多个非问号的字符,确保/l/前后都不会出现问号/l/匹配你要求必须存在的路径片段$匹配链接字符串的结尾,确保规则校验覆盖整个完整链接
如果需要同时校验HTTP/HTTPS前缀,可以使用带前缀校验的版本:
pattern = re.compile(r'^https?://[^?]*/l/[^?]*$')
测试效果
- 匹配通过的链接示例:
https://www.example.com/l/article、https://test.com/path/l/resource - 匹配失败的链接示例:
https://www.example.com/?var=yes、https://test.com/l/page?a=123、https://test.com/nol/path
内容的提问来源于stack exchange,提问作者Gustavo Kotelchuk
相关产品推荐
相关产品推荐

