📜  youtube 视频正则表达式 (1)

📅  最后修改于: 2023-12-03 15:06:07.020000             🧑  作者: Mango

使用正则表达式提取YouTube视频链接

在开发Web应用程序时,你可能需要从用户输入中获取YouTube视频链接,然后把它们嵌入到页面中。

这时,在处理用户输入时,可以使用正则表达式来检索用户输入中的YouTube链接。下面是一个简单的正则表达式,可以用来匹配YouTube视频链接:

import re

link_regex = r"(?i)(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?|watch|.*[&?](?:v|vi)=))|youtu\.be\/)([a-zA-Z0-9_-]{11})"

这个正则表达式将匹配所有YouTube视频链接,并只捕获视频ID。

不仅如此,它还可以处理以下链接格式:

  • http://www.youtube.com/watch?v=VIDEO_ID
  • http://youtu.be/VIDEO_ID
  • http://www.youtube.com/embed/VIDEO_ID
  • https://www.youtube.com/watch?v=VIDEO_ID&feature=youtu.be

为了使用这个正则表达式,只需要把它传递给re.compile()函数,并使用返回的模式对象来匹配一些文本。然后,可以使用group(1)方法,从捕获的结果中得到视频ID。下面是一个示例代码:

pattern = re.compile(link_regex)
text = "Check out this cool video: http://www.youtube.com/watch?v=hdw1uKiTI5c"
match = pattern.search(text)
if match:
    video_id = match.group(1)
    print("Found video ID:", video_id)
else:
    print("No video ID found in input.")

这将输出:

Found video ID: hdw1uKiTI5c

在实际应用中,如果你需要从输入文本中提取多个YouTube视频链接,可以使用finditer()方法,而不是search()方法。然后,使用一个循环来遍历所有匹配项,并提取视频ID。下面是一个示例代码:

pattern = re.compile(link_regex)
text = "Check out these cool videos: http://www.youtube.com/watch?v=hdw1uKiTI5c and http://www.youtube.com/watch?v=kBC_G5yuzhU"
matches = pattern.finditer(text)
for match in matches:
    video_id = match.group(1)
    print("Found video ID:", video_id)

这将输出:

Found video ID: hdw1uKiTI5c
Found video ID: kBC_G5yuzhU

因此,使用正则表达式可以非常方便地从用户输入中提取YouTube视频链接。