【发布时间】:2016-04-22 08:31:31
【问题描述】:
我想检索 YouTube URL 的视频 ID 部分,它是 HTML 锚元素的一部分,例如使用正则表达式:
<a href="http://www.youtube.com/watch?v=NC2blnl0WTE">Some text</a>
我已经四处寻找一些解决方案。我从一个 Javascript 解决方案中找到了一个,它从 url 中获取视频 ID,如下所示:
/https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig
我想在 Python 中使用它,因为它支持 YouTube 网址的各种变化。我在我的 Python 脚本中实现了它:
string = re.sub(r'https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:[\'"][^<>]*>|<\/a>))[?=&+%\w.-]*', r'\1', string)
而且我没有替代品。我从正则表达式中删除了/ 和/ig,因为它们仅在 Javascript 中,但我仍然无法获取视频 ID。一旦我能够拿到 ID,我就可以轻松地更改正则表达式以删除锚元素。
我的解决方案做错了什么?谢谢。
【问题讨论】:
标签: javascript python regex