如何用正则表达式从类字典字符串中提取所有URL?
解决类字典字符串中提取所有URL的正则方案
嘿,我知道你在处理这个类字典格式的字符串时,遇到了正则只能提取部分URL的问题,这就给你一个靠谱的解决方案!
问题分析
先看你的目标字符串结构:每个URL都严格包裹在url:'...'的格式里,URL本身以https://开头,并且内部没有单引号(从示例内容来看)。之前的正则可能因为匹配范围不够精准,导致漏抓或者误抓。
可行的正则表达式
这里推荐使用这个正则来精准捕获所有URL:
url:'(https://[^']+)'
正则解释:
url:':精准匹配URL的前缀标识,确保我们只找url:后面的链接(https://[^']+):捕获组,其中:https://:匹配URL的协议部分,确保只提取HTTPS链接[^']+:匹配除单引号之外的任意字符,直到遇到下一个单引号为止,完美适配你的字符串中URL被单引号包裹的结构
代码示例(Python)
直接用re.findall就能一次性提取所有URL:
import re s = "'0352442':{url:'https://www.riteaid.com/shop/nexium-24hr-42-ct-capsules-0352442'},'0370009':{url:'https://www.riteaid.com/shop/rite-aid-pharmacy-epsom-salt-first-aid-6-lb-2-72-kg-0370009'},'0303249':{url:'https://www.riteaid.com/shop/huggies-natural-care-unscented-baby-wipes-soft-pack-56-count-0303249'},'0398568':{url:'https://www.riteaid.com/shop/rite-aid-sterile-pads-4-x4-25-ea-0398568'},}" # 提取所有URL extracted_urls = re.findall(r"url:'(https://[^']+)'", s) # 输出结果 for idx, url in enumerate(extracted_urls, 1): print(f"URL {idx}: {url}")
运行这段代码后,你会得到所有4个URL,一个都不会漏!
额外说明
如果你的URL中可能包含单引号(虽然示例里没有),那这个正则需要调整,但从你给出的输入来看,这个方案完全够用。如果后续有特殊情况,我们可以再优化正则逻辑~
内容的提问来源于stack exchange,提问作者haluan
相关产品推荐
相关产品推荐

