Regex не является хорошим выбором для этого, потому что 1) Титулы могут появиться в любом порядке, и 2) вам нужно выполнить дополнительные проверки для разделителей запросов, чтобы вы не соответствовали потенциальным таким странностям, как «flu = userpage», «sp = 1», «u = userpage% 20haha» или «s = 123». (Примечание: Я пропустил два из этих случаев на моем первом проходе! Так же были и другие.) Также: 3) у вас уже есть хорошая библиотека синтаксического анализа URL в Python, которая выполняет эту работу за вас.
с регулярным выражением вам нужно что-то неуклюжее, как:
q = re.compile(r'([?&]u=userpage&(.*&)?p=1(&|$))|([?&]p=1&(.*&)?u=userpage(&|$))')
return q.search(href) is not None
С urlparse вы можете сделать это. urlparse дает вам немного больше, чем вы хотите, но вы можете использовать вспомогательную функцию, чтобы результат был простым:
def has_qparam(qs, key, value):
return value in qs.get(key, [])
qs = urlparse.parse_qs(urlparse.urlparse(href).query)
return has_qparam(qs, 'u', 'userpage') and has_qparam(qs, 'p', '1')
это как если бы вы сказали * Я хотел бы выйти. Как я прыгаю из окна должным образом, чтобы не сломать ногу? *, Когда лучший подход - использовать вашу дверь. Тем не менее, всегда есть больше способов, как это сделать .. – mykhal