You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests获取网页后,re.match匹配数字返回None的问题求助

问题解答

核心原因

re.match() 仅会从字符串的起始位置尝试匹配正则表达式。你请求到的r.text是example.com的HTML内容,开头是<html>这类非数字标签,所以即便内容里包含数字,match()也无法匹配到,直接返回None。而你测试的'12345'字符串开头就是数字,因此能正常匹配。

解决办法

  1. 使用re.search()替代re.match():search()会扫描整个字符串,找到第一个符合正则规则的内容就返回匹配结果,这是最直接的解决方案:
    import requests, re
    
    r = requests.get('http://example.com')
    p = re.compile(r'\d')
    
    print(p.search(r.text))
    
  2. 若坚持使用match(),可修改正则表达式允许开头存在任意字符,比如:
    p = re.compile(r'.*\d')
    print(p.match(r.text))
    
    不过这种写法不如search()直观,仅推荐在特定场景下使用。

另外补充:r.text本身已经是字符串类型,你代码里的str(r.text)属于多余操作,直接使用r.text即可。

内容的提问来源于stack exchange,提问作者Red Dwarf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 05:34:53