Tôi đang cố gắng tạo hai biểu thức chính quy để lọc id từ youtube và video vimeo. Tôi đã có các biểu thức sau đây;C# regex để lấy id video từ youtube và vimeo bằng url
YouTube: (youtube\.com/)(.*)v=([a-zA-Z0-9-_]+)
Vimeo: vimeo\.com/([0-9]+)$
Như tôi đã giải thích bên dưới, có 2 loại url khớp với cụm từ thông dụng mà tôi đã tạo. Một số loại url khác từ Vimeo và YouTube không bị che đậy bởi các biểu thức. Những gì tôi thích nhất là tất cả điều này có thể được bao gồm trong hai biểu thức. Một cho tất cả các video của Vimeo và một cho tất cả các video youtube. Tôi đã bận rộn thử nghiệm với một số biểu thức khác nhau, nhưng không có succes cho đến nay. Tôi vẫn đang cố gắng nắm vững các biểu thức thông thường, vì vậy tôi hy vọng tôi đang đi đúng hướng và ai đó có thể giúp tôi! Nếu cần thêm thông tin, vui lòng cho tôi biết!
URLVimeo không phù hợp:
URLhttp://vimeo.com/channels/hd#11384488
http://vimeo.com/groups/brooklynbands/videos/7906210
http://vimeo.com/staffpicks#13561592
YOUTUBE không phù hợp
http://www.youtube.com/user/username#p/a/u/1/bpJQZm_hkTE
http://www.youtube.com/v/bpJQZm_hkTE
http://youtu.be/bpJQZm_hkTE
URL khớp
http://www.youtube.com/watch?v=bWTyFIYPtYU&feature=popular
http://vimeo.com/834881
Ý tưởng là để phù hợp với tất cả các url nêu trên với hai biểu thức thông thường . Một cho vimeo và một cho youtube.
CẬP NHẬT SAU ĐÁP Sedith:
Đây là cách biểu hiện của tôi trông tại
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);
Và trong mã tôi có
var youtubeMatch = url.match(YoutubeVideoRegex);
var vimeoMatch = url.match(VimeoVideoRegex);
var youtubeIndex = (youtubeMatch.length - 1)
var youtubeId = youtubeMatch[youtubeIndex];
Như bạn có thể thấy tôi bây giờ cần phải tìm các chỉ số trong đó videoId nằm trong mảng có các kết quả phù hợp được trả lại từ regex. Nhưng tôi muốn nó chỉ trả lại id chính nó, vì vậy tôi không cần phải sửa đổi mã khi youtube của vimeo bao giờ quyết định thay đổi url. Bất kỳ lời khuyên về điều này?
Cảm ơn! Tôi đã thử các biểu thức và công việc một cách hoàn hảo, nhưng trong khi tôi đã được thử nghiệm tôi phát hiện ra nó thuận tiện hơn để chỉ nhận được một phần của url chứa id video, điều này có thể? – Rob
Xem các thay đổi ở trên. Các mô hình youtube là hơi sai nhưng bây giờ cả hai người trong số họ nên có id bị bắt trong match.Groups [1] .Value – Septih
Cảm ơn bạn đã phản ứng tốt! Tôi sẽ thử điều đầu tiên này, và tôi sẽ cho bạn biết! – Rob