如何从指定URL提取特定文本?正则最后一个\d+匹配失败求优化方案
解决方案
首先,你的正则表达式其实能匹配到100097,问题出在代码取错了分组——当前取的是group(2)(对应UUID部分),而目标值在group(3)里。不过确实有更简洁高效的方案:
方案1:直接分割URL路径
不用正则,通过字符串分割更直观:
import urllib.parse url = "https://hub.atlas.co/3/CDEB98AA-FA21-4C0A-B0AA-BERCI87J/100097" # 解析URL获取路径部分 path = urllib.parse.urlparse(url).path # 分割路径片段,取最后一个非空部分 target_id = path.strip('/').split('/')[-1] print(target_id) # 输出 100097
方案2:简化正则表达式
如果一定要用正则,直接匹配URL末尾的数字更精准:
import re url = "https://hub.atlas.co/3/CDEB98AA-FA21-4C0A-B0AA-BERCI87J/100097" # 匹配最后一个斜杠后的数字(确保是路径末尾) url_pattern = r"/(\d+)$" id_search = re.search(url_pattern, url) if id_search: print(id_search.group(1)) # 输出 100097
方案3:修正原正则的分组取值
如果要保留原正则结构,只需调整分组索引:
import re url = "https://hub.atlas.co/3/CDEB98AA-FA21-4C0A-B0AA-BERCI87J/100097" url_pattern = r"atlas.co/(\d+)/([^/]+)/(\d+)" id_search = re.search(url_pattern, url) if id_search: print(id_search.group(3)) # 输出 100097
内容的提问来源于stack exchange,提问作者Ben David
相关产品推荐
相关产品推荐

