You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pytube出现RegexMatchError匹配失败错误,求解决方案

关于pytube的RegexMatchError问题求助

运行代码时触发pytube.exceptions.RegexMatchError,错误提示无法匹配正则表达式(?:v=|\/)([0-9A-Za-z_-]{11}).*。使用PySimpleGUI搭建GUI,确认输入的URL正确,且该代码在其他项目中可正常运行,无法定位报错原因,寻求技术帮助。

代码片段

def downlad_playlist(listurl, destination, only_audio = True):
    list_url = Playlist(listurl)

    print(f'Downloading: {list_url.title}')
    for url in list_url.video_urls:
        vid_url = YouTube(url)
        window["-DOWNLOAD_TEXT-"].update("Downloading: " + vid_url.title)
        window.refresh()
        vid_url.register_on_progress_callback(on_progress)
        # try:
        video = vid_url.streams.filter(only_audio=True).first()
        out_file = video.download(output_path=destination)

完整错误信息

Traceback (most recent call last):
  File "C:\Users\gamer\Desktop\yt-py\yt_downloaderV3.py", line 111, in <module>
    download_video(values["-YOUTUBE_URL-"], values["-SAVE_LOCATION-"])
  File "C:\Users\gamer\Desktop\yt-py\yt_downloaderV3.py", line 36, in download_video
    yt = YouTube(url)
         ^^^^^^^^^^^^
  File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\__main__.py", line 71, in __init__
    self.video_id = extract.video_id(url)
                    ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\extract.py", line 133, in video_id
    return regex_search(r"(?:v=|\/)([0-9A-Za-z_-]{11}).*", url, group=1)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\gamer\Desktop\yt-py\venv\Lib\site-packages\pytube\helpers.py", line 129, in regex_search
    raise RegexMatchError(caller="regex_search", pattern=pattern)
pytube.exceptions.RegexMatchError: regex_search: could not find match for (?:v=|\/)([0-9A-Za-z_-]{11}).*

排查方向

  • 检查Playlist返回的video_urls内容:在循环中打印每个url,确认是否存在格式异常的链接(比如短链接、带多余参数或隐藏字符的URL)。
  • 更新pytube版本:执行pip install --upgrade pytube,旧版本可能因YouTube页面结构更新导致正则匹配失效。
  • 手动处理URL:若发现异常URL,手动提取11位video_id,构造标准URL(如https://www.youtube.com/watch?v={video_id})后传入YouTube类。
  • 清理GUI输入的URL:在传入Playlist前对listurl执行strip(),去除可能存在的空格、换行符等隐藏字符。

内容的提问来源于stack exchange,提问作者StrangePigeon79

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:06:20