регулярное выражение для разделения параметров HTML GET

Как я могу использовать регулярное выражение для разделения GET параметров в URI и извлечения определенного? В частности, я пытаюсь получить только часть v= URI просмотра YouTube. Я придумал youtube.com\/watch\?(\w+=[\w-]+&?)*(v=[\w-]+)&?*(\w+=[\w-]+&?)*, но это выглядит ужасно повторяющимся. Есть ли лучший (более короткий?) способ сделать это?


person Blacklight Shining    schedule 10.10.2012    source источник
comment
«параметры страницы» — я не уверен, как они называются.   -  person Blacklight Shining    schedule 10.10.2012
comment
Я думаю, что они называются параметрами POST или могут быть разумно названы так.   -  person Martin Green    schedule 10.10.2012
comment
@MartinshShaiters Исправлено. Спасибо!   -  person Blacklight Shining    schedule 10.10.2012
comment
На самом деле параметры в URL — это GET параметры. Если вы отправите форму, результирующий запрос, скорее всего, будет содержать POST параметров с вашим вводом.   -  person Arjan    schedule 10.10.2012
comment
@Arjan снова исправлено! Спасибо. XD   -  person Blacklight Shining    schedule 10.10.2012
comment
Кстати, официальное название будет Query String. Вам не нужно снова редактировать - я уверен, что все поняли :)   -  person Kobi    schedule 10.10.2012
comment
Затем посмотрите на один из них: stackoverflow.com/search?q=youtube+regex.   -  person Kobi    schedule 10.10.2012
comment
возможный дубликат Reg exp для ссылки на YouTube   -  person Kobi    schedule 10.10.2012
comment
@Arjan Спасибо, что поправили меня - показывает, что я знаю обо всех этих веб-материалах. :)   -  person Martin Green    schedule 10.10.2012


Ответы (2)


Упрощенное регулярное выражение:

^(?:http://www.)?youtube.[^/]+?/watch?(.?)(v=([^&]+))(.)$

person Stephan    schedule 10.10.2012

Я знаю, что есть много похожих вопросов, но ни один из них не соответствует достаточно тому, что я хотел. Я ищу что-то, способное извлекать просто идентификатор видео — независимо от того, находится ли он первым в списке параметров, последним или спрятан между другими. Ничто из того, что я видел, еще не работало так же.

Для справки: я использую это веб-приложение для тестирования и этот набор тестовых URI:

http://www.youtube.com/watch?v=XXXXXXXXXXX
http://www.youtube.com/watch?v=XXXXXXXXXXX&feature=results_video&playnext=1&list=XXXXXXXXXXXXXXXXXX
http://www.youtube.com/watch?feature=player_embedded&v=XXXXXXXXXXX#!
http://www.youtube.com/watch?annotation_id=annotation_xxxxxx&feature=iv&src_vid=XXXXXXXXXXX&v=XXXXXXXXXX

Товарищи Stack Exchangers, я предлагаю следующее регулярное выражение для решения этой проблемы:
youtube.com\/watch\?(\S*)v=([\w-]+)

person Blacklight Shining    schedule 10.10.2012