Как я могу использовать регулярное выражение для разделения GET
параметров в URI и извлечения определенного? В частности, я пытаюсь получить только часть v=
URI просмотра YouTube. Я придумал youtube.com\/watch\?(\w+=[\w-]+&?)*(v=[\w-]+)&?*(\w+=[\w-]+&?)*
, но это выглядит ужасно повторяющимся. Есть ли лучший (более короткий?) способ сделать это?
регулярное выражение для разделения параметров HTML GET
Ответы (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
GET
параметры. Если вы отправите форму, результирующий запрос, скорее всего, будет содержатьPOST
параметров с вашим вводом. - person Arjan   schedule 10.10.2012:)
- person Kobi   schedule 10.10.2012