ios - 用于将 URL 与视频 ID 匹配的正则表达式

标签 ios regex regex-lookarounds regex-group regex-greedy

我正在尝试制作一个 iOS 快捷方式,让我在新标签页中同时打开所有网站视频链接,为此我需要一个 RegEx。

本网站的视频链接如下所示:

https://m.worldstarhiphop.com/apple/video.php?v=wshhn5icmk9cKSyh9A17    
https://m.worldstarhiphop.com/apple/video.php?v=wshhc8Ew271C2BZE0l31

到目前为止我有这个:

^(?!image$).*(worldstarhiphop.com/apple/video)

因为我不希望快捷方式打开所有图片链接而只打开视频链接。

最佳答案

我已将多个捕获组添加到 this expression易于修改/更改和理解:

^((https?:\/\/.*)(worldstarhiphop.com)((\/apple\/video.php\?v=)|\/videos\/video.php\?v=)([A-Za-z0-9]{20}))

我没有使用 $ 关闭右侧,如果您愿意,可以这样做。

您希望匹配的 URL 有两个移动版本和网络版本,为了以防万一,我已经添加了各种协议(protocol)。如果不需要,您可以将其删除。

enter image description here

正则表达式描述图

图表可视化它是如何工作的,您可能想测试此 link 中的其他表达式:

enter image description here

基本性能测试

此 JavaScript 片段返回 100 万次 for 循环的运行时间以提高性能。

const repeat = 1000000;
const start = Date.now();

for (var i = repeat; i >= 0; i--) {
	const string = 'https://m.worldstarhiphop.com/apple/video.php?v=wshhc8Ew271C2BZE0l31';
	const regex = /^((https?:\/\/.*)(worldstarhiphop.com)((\/apple\/video.php\?v=)|\/videos\/video.php\?v=)([A-Za-z0-9]{20}))/gm;
	var match = string.replace(regex, "\nGroup #1: $1\nGroup #2: $2 \nGroup #3: $3 \nGroup #4: $4\nGroup #6: $6 \n");
}

const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match 💚💚💚 ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test. 😳 ");

关于ios - 用于将 URL 与视频 ID 匹配的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083747/

相关文章:

ios - 如何在 UITableView 中找到屏幕中心的哪一行/单元格?

ios - tableview的Datasource数组的值自动变为0

javascript - replace(/[^a-z0-9]/gi, '' ) 和 replace(/[^a-zA-Z0-9]/g, '' ) 之间的区别

c - 使用正则表达式从字符串中分配变量

regex - 对于这个意外的负先行子模式,我犯了什么错误?

ios - 在 Xcode Interface Builder 中隐藏 Storyboard 上的 iOS Home Indicator?

objective-c - 如何从 obj-c/ios 中的堆栈跟踪获取源代码行

java - 查找多行单词之间的文本

php - 邮政信箱验证

regex - 如何在 NiFi 中的内容处理器上指定路由的正则表达式?