Python正则表达式将youtube url转换为youtube视频

标签 python regex url youtube

我正在制作一个正则表达式,这样我就可以在用户发布的一段 HTML 文本中找到 youtube 链接(可以是多个)。

目前我正在使用以下正则表达式将“http://www.youtube.com/watch?v=-JyZLS2IhkQ”更改为显示相应的 youtube 视频:

return re.compile('(http(s|):\/\/|)(www.|)youtube.(com|nl)\/watch\?v\=([a-zA-Z0-9-_=]+)').sub(tag, value)

(其中变量“标签”是一些 html,因此视频有效并且“重视”用户帖子)

现在这个工作..直到 url 是这样的:

'http://www.youtube.com/watch?v=-JyZLS2IhkQ&feature...'

现在我希望你们能帮我弄清楚如何匹配“&feature...”部分以使其消失。

示例 HTML:

No replies to this post..

Youtube vid:

http://www.youtube.com/watch?v=-JyZLS2IhkQ

More blabla

感谢您的意见,非常感谢

斯特凡

最佳答案

我是这样解决的:

import re

def youtube_url_validation(url):
    youtube_regex = (
        r'(https?://)?(www\.)?'
        '(youtube|youtu|youtube-nocookie)\.(com|be)/'
        '(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})')

    youtube_regex_match = re.match(youtube_regex, url)
    if youtube_regex_match:
        return youtube_regex_match

    return youtube_regex_match

测试:

youtube_urls_test = [
    'http://www.youtube.com/watch?v=5Y6HSHwhVlY',
    'http://youtu.be/5Y6HSHwhVlY', 
    'http://www.youtube.com/embed/5Y6HSHwhVlY?rel=0" frameborder="0"',
    'https://www.youtube-nocookie.com/v/5Y6HSHwhVlY?version=3&hl=en_US',
    'http://www.youtube.com/',
    'http://www.youtube.com/?feature=ytca']


for url in youtube_urls_test:
    m = youtube_url_validation(url)
    if m:
        print('OK {}'.format(url))
        print(m.groups())
        print(m.group(6))
    else:
        print('FAIL {}'.format(url))

关于Python正则表达式将youtube url转换为youtube视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4705996/

相关文章:

python - 如何搜索数组列表

python - 在 python 中删除字符串的一部分(直到但不包括)

java - 使用正则表达式分割具有多个条件的字符串

bash - WGET 保存时使用错误的文件和扩展名,可能是由于 BASH 造成的

javascript - Gruntfile.js 中的 {,*/}*.* 是什么意思

php - 带有特殊字符的文件名,如 "é"NOT FOUND

python - 在python中将月份名称更改为日期

Python - 如何从输入文本文件中仅编写以 $ 开头的 case 语句和实例?

regex - 使用 perl regexp 和 $^R 解析嵌套元组

regex - Linux 从命令行查找和替换