采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
match(/[(\d{2,}):(\d{2})(?:.(\d{2,3}))?]/g)里的正则表达式不能理解?为什么前面的[,后面就不用加 \ 转义符号,?匹配整个式子的话应该是/([(\d{2,}):(\d{2})(?:.(\d{2,3}))])?/g)的吧? ?:.是什么意思获取:或者获取.吗,那不是应该(?:.|:)吗?
?: 表示避免保存括号内的匹配结果,也可以理解成不记录子表达式的匹配结果。这里只要输出下得到的歌词格式就会知道,不需要去匹配冒号,冒号和前面的问号是一个语法。
写多了会发现,对于同样的需求,不同的人写的正则可能是不相同的,分析的角度可能不一样。
老师,您好!代码中(/\[(\d{2,}):(\d{2})(?:\.(\d{2,3}))?]/g)中(?:\.(\d{2,3}))这部分 ?:\. 我理解您讲解的意思是取到[03:00.880]这种.分隔的时间形式,或者[03:00:880]这种:分隔的时间形式,但实际测试中您写的 ?:\. 并不能取到:分隔的时间形式。我尝试的结果是(?::(\d{2,3})|\.(\d{2,3})),这种写法才能两种都匹配。请老师核查下我的思路,并辛苦再详细叙述下 ?:\. 这种写法的原因,谢谢老师。
还有一个问题,老师在课程中说会有两个时间的存在,所以加了(\d{2,3}))?,可我理解的意思,该?放置的位置,只是对(?:\.(\d{2,3}))这部分匹配0或者1测,并没有对整个时间做匹配。辛苦老师再讲解下。如果是存在[03:00.880] [03:00.880] 这种两个时间段对一个歌词的形式,那?应该加载]之外啊,表达式应该是(/\[(\d{2,}):(\d{2})(\.(\d{2,3}))]?/g)。(PS:这里删除了上个疑惑?:\.这部分的?:)
登录后可查看更多问答,登录/注册
横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程
3.6k 20
1.5k 4
1.9k 1
2.4k 1
2.3k 13