1

How can I use a regular expression to separate GET parameters in a URI and extract a certain one? Specifically, I'm trying to get just the v= part of a YouTube watch URI. I've come up with youtube.com\/watch\?(\w+=[\w-]+&?)*(v=[\w-]+)&?*(\w+=[\w-]+&?)*, but that looks awfully repetitive. Is there a better (shorter?) way to do this?

4

2 に答える 2

0

似たような質問がたくさんあることは知っていますが、私が望んでいたものはありません。パラメータ リストの最初、最後、または他のパラメータの間に埋め込まれているかどうかに関係なく、ビデオ IDだけを取得できるものを探しています。私が見たものは、まだそのように機能していません。

参考までに、私はこの Web アプリをテスト用に使用しており、この一連のテスト 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-]+)

于 2012-10-10T08:18:57.453 に答える
0

簡略化された正規表現:

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

于 2012-10-10T07:33:59.523 に答える