【发布时间】:2016-12-13 16:08:19
【问题描述】:
我有一个 URL 列表,我试图从中获取 ID 号。我正在尝试使用 URLParse 和正则表达式的组合来解决这个问题。这是我的函数的样子:
def url_cleanup(url):
parsed_url = urlparse(url)
if parsed_url.query=="fref=ts":
return 'https://www.facebook.com/'+re.sub('/', '', parsed_url.path)
else:
qry = parsed_url.query
result = re.search('id=(.*)&fref=ts',qry)
return 'https://www.facebook.com/'+result.group(1)
但是,我觉得正则表达式 result = re.search('id=(.*)&fref=ts',qry) 无法匹配以下示例中解释的某些 URL。
#1
id=10001332443221607 #No match
#2
id=6383662222426&fref=ts #matched
我尝试按照this 答案中提供的建议采纳建议,将我的正则表达式改写为id=(.*).+?(?=&fref=ts),在上面的示例中再次匹配#2 但不匹配#1。
我不确定我在这里缺少什么。任何建议/提示将不胜感激。
【问题讨论】:
-
有一些使用 Python 风格的在线正则表达式测试器,它们非常方便地制作模式。 regex101.com 是其中之一。您是否尝试过
'id=(\d*)'的模式?