正则表达式的问题

来源:4-14 歌词数据解析

慕虎9125073

2020-01-10

match(/[(\d{2,}):(\d{2})(?:.(\d{2,3}))?]/g)里的正则表达式不能理解?为什么前面的[,后面就不用加 \ 转义符号,?匹配整个式子的话应该是/([(\d{2,}):(\d{2})(?:.(\d{2,3}))])?/g)的吧? ?:.是什么意思获取:或者获取.吗,那不是应该(?:.|:)吗?

写回答

1回答

谢成

2020-01-10

?: 表示避免保存括号内的匹配结果,也可以理解成不记录子表达式的匹配结果。这里只要输出下得到的歌词格式就会知道,不需要去匹配冒号,冒号和前面的问号是一个语法。


写多了会发现,对于同样的需求,不同的人写的正则可能是不相同的,分析的角度可能不一样。


1
2
慕标6528938
还有一个问题,老师在课程中说会有两个时间的存在,所以加了(\d{2,3}))?,可我理解的意思,该?放置的位置,只是对(?:\.(\d{2,3}))这部分匹配0或者1测,并没有对整个时间做匹配。辛苦老师再讲解下。如果是存在[03:00.880] [03:00.880] 这种两个时间段对一个歌词的形式,那?应该加载]之外啊,表达式应该是(/\[(\d{2,}):(\d{2})(\.(\d{2,3}))]?/g)。(PS:这里删除了上个疑惑?:\.这部分的?:)
2021-10-07
共2条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程