我使用 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
当我错误地刷新页面时,问题就来了。因此,如果网址已经:
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