Я пытаюсь написать свое собственное расширение разметки и для видео, которое я хочу, чтобы пользователь мог предоставить дополнительные значения для ширины и высоты. Доступные форматы разгрузки следующие:Python regexp с необязательными параметрами
http:/vimeo.com/456456456[width,height]
http:/vimeo.com/456456456
http:/vimeo.com/456456456[,height]
http:/vimeo.com/456456456[width,]
У меня нет вопросов с первой частью, но только с последней - шириной и высотой. Мой текущий регулярное выражение выглядит следующим образом:
rx = r'([^(]|^)(http|https)://(?:www.|)vimeo\.com/(?P<vimeoid>\d+)(?:\[(?P<width>\d+|),\s*,\s*(?P<height>\d+|)\]|)\S*'
На самом деле интересное только последняя часть этого: (?:\[(?P<width>\d+|),\s*,\s*(?P<height>\d+|)\]|)
. Он отлично работает, если я предоставляю значения для ширины и высоты. Но если я опускаю его или опуская всю часть скобки (это должно быть хорошо), мой код по-прежнему возвращает захваченные группы для width
и height
со значениями None
. Это не то, чего я хочу.
Я хочу, чтобы при использовании не предоставлялась ширина или высота или не были предоставлены пустые скобки или не были предоставлены вообще, тогда группы по ширине и высоте не оцениваются.
UPD: Возможно, это побочный эффект регулярного выражения python - всегда оценивать именованные группы, я не уверен.
Будут ли в URL-адресах буквальные '[' и ']'? – anubhava
Нет, я полагаю, что символы [] не найдены в URL-адресе. –
В этом случае pls предоставляют некоторые реальные примеры URL-адреса. – anubhava