javascript - 如何删除最后出现的匹配项?

标签 javascript jquery regex

我的歌词格式如下:

[00:26.8]Lo [00:27.0]rem[00:27.2] Ipsum[00:27.4] sam[00:27.6]ple [00:27.9]text[00:28.1] to [00:28.5]
[00:28.51]demonstrate[00:28.7] the[00:28.9] lyrics[00:29.1] text

我使用以下正则表达式来匹配时间标签 ([hh:mm.ss]):

/\[\d{1,2}:\d{1,2}\.\d{0,2}\]/ig

但是我如何找到并删除最后一个时间标签(上例中的[00:29.1])?了解我可以匹配所有出现的情况,取最后一个,找到文本中相应标签的位置(使用 lastIndexOf 用法),然后删除该标签。但有没有更好的方法来实现呢?

更新。还有一个条件 - 如果时间标签位于行的开头,则不应将其删除。 IE。如果是歌词:

[00:26.8]Lo [00:27.0]rem[00:27.2] Ipsum[00:27.4] sam[00:27.6]ple [00:27.9]text[00:28.1] to [00:28.5]
[00:28.51]demonstrate

找到并删除的标签应该是[00:28.5],而不是[00:28.51]

最佳答案

添加前瞻断言以确保匹配字符串后面不存在 [..]

/\[\d{1,2}:\d{1,2}\.\d{0,2}\](?!(.|\n)*\[)/

Regex Demo

关于javascript - 如何删除最后出现的匹配项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28265163/

相关文章:

javascript - 获取特定两个数字后接下来的 6 个任意数字

java - 正则表达式 - 匹配两个单词或一个单词,但优先考虑两个单词

javascript - 使用 Enter 键按 Tab 键浏览元素,包括 select2

javascript - 绝对定位的 div,页面其余部分可滚动

javascript - 当有 promise 数组时使用 jQuery

jquery - 使用 jQuery AJAX 发布到 ASP.NET MVC 1.0

javascript - JS 全局变量传递为未定义 - jquery mobile

regex - VB.NET 中带拆分的正则表达式

javascript - 将 UI Fabric PeoplePicker 与 React 结合使用需要什么特别的东西吗?

javascript - React 替换 CSS 中的特殊字符 `content`