regex - 使用正则表达式以正确的方式将 Youtube 频道主页重定向到视频部分
问题描述
我使用Requestly制定了一个正则表达式规则,每次我进入 youtube 频道时,它都会将我重定向到视频部分。我制定的规则是这样的:
/https\:\/\/www\.youtube\.com\/channel\/(.+)/ig
替换为:
https://www.youtube.com/channel/$1/videos
将此作为测试字符串:
https://www.youtube.com/channel/random_name1234
,我明白了:
https://www.youtube.com/channel/random_name1234/videos
当我错误地刷新页面时,问题就来了。因此,如果 URL 已经是:
https://www.youtube.com/channel/random_name1234/videos
,我得到:
https://www.youtube.com/channel/random_name1234/videos/videos
如果我在频道的播放列表部分并刷新页面,我会得到:
https://www.youtube.com/channel/random_name1234/playlists/videos
如何通过修改正则表达式模式来解决这个问题?我有几次尝试,但我失败了,因为我不太擅长正则表达式。
谢谢!
解决方案
问题是它.*
会匹配任何东西——包括如果你已经在/videos
页面上,或者像/playlist
,/community
等其他部分。
您可以通过说“仅匹配非正斜杠字符”来使正则表达式更具限制性,以确保相关 URL 实际上是主频道页面。
试试这个:
/https\:\/\/www\.youtube\.com\/channel\/([^\/]+)\/?$/ig
[^\/]+
表示“一个或多个不是正斜杠的字符”。\/?
表示“可选的正斜杠”,以防 URL 末尾有尾随。$
表示“字符串结尾”,因此正则表达式不会匹配较长的 URL,例如https://www.youtube.com/channel/xxxxx/about
推荐阅读
- python - colab 中图像分类的联邦学习
- php - 保存帖子后更新 WooCommerce menu_order
- graphql - 我可以将 args 的类型从 graphql 的解析器更改为 id 吗?
- javascript - 根据日期数组创建年和月的唯一对象
- python - 如何找到所有负斜率直线并获得具有最小 y=0 值的直线
- c++ - 从多个模板类实例继承的类返回它们的类型
- angular - Angular:未定义标识符“标题”。'never' 不包含这样的成员。异常问题
- php - 引导链接变成普通按钮
- php - Ubuntu 18.04 PHP 7.3 - 没有 apt install 的 Apache 连接
- sorting - 在java 8中排序2次并按值排序