Ich bin damit beschäftigt, zwei reguläre Ausdrücke zu erstellen, um die ID von Youtube- und Vimeo-Videos zu filtern. Ich habe bereits die folgenden Ausdrücke;C# regex, um die Video-ID von youtube und vimeo per URL zu erhalten
YouTube: (youtube\.com/)(.*)v=([a-zA-Z0-9-_]+)
Vimeo: vimeo\.com/([0-9]+)$
Wie ich unten erläutert habe, gibt es zwei Arten von URLs, die mit den regulären Ausdrücken übereinstimmen, die ich bereits erstellt habe. Einige andere Arten von URLs von Vimeo und YouTube sind nicht durch die Ausdrücke abgedeckt. Was ich am meisten bevorzuge ist, dass all dies in zwei Ausdrücken abgedeckt werden kann. Eine für alle Vimeo-Videos und eine für alle Youtube-Videos. Ich habe mit verschiedenen Ausdrücken experimentiert, aber bisher keinen Erfolg. Ich versuche immer noch, reguläre Ausdrücke zu beherrschen, also hoffe ich, dass ich auf dem richtigen Weg bin und jemand mir helfen kann! Wenn mehr Informationen benötigt werden, lass es mich wissen!
VIMEO URLs NOT MATCHED:
http://vimeo.com/channels/hd#11384488
http://vimeo.com/groups/brooklynbands/videos/7906210
http://vimeo.com/staffpicks#13561592
YOUTUBE URLs ABGESTIMMTER NICHT
http://www.youtube.com/user/username#p/a/u/1/bpJQZm_hkTE
http://www.youtube.com/v/bpJQZm_hkTE
http://youtu.be/bpJQZm_hkTE
URLs Matched
http://www.youtube.com/watch?v=bWTyFIYPtYU&feature=popular
http://vimeo.com/834881
Die Idee passen die alle URLs oben mit zwei regulären Ausdrücken erwähnt ist . Eins für Vimeo und eins für Youtube.
UPDATE NACH ANTWORT Sedith:
Dies ist, wie meine Ausdrücke aussieht jetzt
public static readonly Regex VimeoVideoRegex = new Regex(@"vimeo\.com/(?:.*#|.*/videos/)?([0-9]+)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
public static readonly Regex YoutubeVideoRegex = new Regex(@"youtu(?:\.be|be\.com)/(?:(.*)v(/|=)|(.*/)?)([a-zA-Z0-9-_]+)", RegexOptions.IgnoreCase);
Und ich in Code habe
var youtubeMatch = url.match(YoutubeVideoRegex);
var vimeoMatch = url.match(VimeoVideoRegex);
var youtubeIndex = (youtubeMatch.length - 1)
var youtubeId = youtubeMatch[youtubeIndex];
Wie Sie mich jetzt den Index finden müssen sehen können Die videoId befindet sich im Array mit Übereinstimmungen, die von der Regex zurückgegeben werden. Aber ich möchte, dass es nur die IDs selbst zurückgibt, also muss ich den Code nicht ändern, wenn Youtube von Vimeo jemals entscheidet, dort urls zu ändern. Irgendwelche Tipps dazu?
Dank! Ich habe die Ausdrücke und die Arbeit perfekt ausprobiert, aber während ich getestet habe, habe ich herausgefunden, dass es bequemer ist, nur den Teil der URL zu bekommen, der die Video-ID enthält, ist das möglich? – Rob
Siehe oben Änderungen. Das Youtube-Muster war ein wenig falsch, aber jetzt sollten beide die ID in Übereinstimmung haben. Gruppen [1]. Wert – Septih
Danke für die gute Antwort! Ich werde das als erstes ausprobieren und werde es euch wissen lassen! – Rob