首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两个时间点之间匹配所有时间点

在两个时间点之间匹配所有时间点
EN

Stack Overflow用户
提问于 2018-11-08 22:51:15
回答 1查看 439关注 0票数 3

我试图生成多个路由,所有这些都是基于时间的视频。在一定的时间范围内使用同一条路线。

是否可以使用regex获取(包括)两个时间点之间的所有值?

一些regex确实比较数字。这个匹配所有大于954的数字。

代码语言:javascript
复制
/[1-9]\d{3,}|9[6-9]\d|9[5-9]{2}/g

但是,有可能比较以下几个方面吗?(将简单的比较替换为正则表达式)

代码语言:javascript
复制
00:00<00:01 // should get 00:00 and 00:01 but not 00:02
00:00<00:02 // should get 00:00, 00:01 and 00:02

附加上下文:使用路径对正则表达式,我可以做一些像/:lang(en|es)这样的事情来匹配英语或西班牙语。我正在试验如何传递/:timecode(regexp),以匹配两个时隙之间的任意时间码。

这将为/00:00/00:01提供一条相同的路线。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-09 23:59:37

通常,使用正则表达式可能不是最好的解决方案。根据工具的不同,可能有更好的解决方案。然而,这在某种程度上是可能的。

如何创建正则表达式

让我们假设我们的timecodes总是有以下格式:mm:ss。您可能需要匹配从22:2277:77的所有时间序列。这意味着,当下列语句之一为真时,正则表达式将匹配。

  • Timecode以2开头,其余字符串为2:22或更高版本。
  • Timecode以3456开头。
  • Timecode以7开头,字符串的其余部分为7:77或更低。

这意味着至少有一个以下三个正则表达式必须匹配:

  • /2{2:22 or higher}/
  • /[3-6]\d:\d\d/
  • /7{7:77 or lower}/

这意味着最后的正则表达式如下所示。被花括号({})包围的部件将在稍后得到解决。

代码语言:javascript
复制
/2{2:22 or higher}|[3-6]\d:\d\d|7{7:77 or lower}/

现在,我们必须解决{2:22 or higher}{7:77 or lower}问题。如果下列语句之一为真,则表单x:xx的字符串为2:22或更高。

  • 字符串以2:开头,其余字符串为22或更高版本。
  • 字符串以3456789开头。

因此,可以将{2:22 or higher}编写为

代码语言:javascript
复制
/2:{22 or higher}|[3-9]:\d\d/

现在我们有了以下几点。

代码语言:javascript
复制
/2(2:{22 or higher}|[3-9]:\d\d)|[3-6]\d:\d\d|7{7:77 or lower}/

您可以重复此步骤,直到没有任何部分被花括号({})包围。结果如下所示。

代码语言:javascript
复制
/2(2:(2[2-9]|[3-9]\d)|[3-9]:\d\d)|[3-6]\d:\d\d|7(7:(7[0-7]|[0-6]\d)|[0-6]:\d\d)/

https://regex101.com/r/AsfRQt/1/tests

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53217357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档