У меня есть список URL-адресов, из которых я пытаюсь получить только номера идентификаторов. Я пытаюсь решить эту проблему, используя комбинацию URLParse и регулярных выражений. Вот как моя функция выглядит следующим образом:Соответствующие регулярные выражения в python, который содержит URL-адреса
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, они очень удобны для крафта моделей. https://regex101.com/ - один. Вы пробовали '' id = (\ d *) ''для шаблона? – wwii