JavaScript 正则表达式 : All matches of a given format up until pattern

标签 javascript regex

我有这个虚拟输入数据:

john:买啤酒 萨姆:吃香蕉 *** 分频器 不相关的行为 路易斯:走路

以及捕获人的行为的正则表达式:/^[\S]*:.*/gm

我需要修改它,以便它仅包含符合文本下方给定模式 (*** DIVIDER) 的操作。

我想我可以使用例如/^[\S]*:.*(?=[\S]*\sDIVIDER)/gm 但由于某种原因它不起作用。

我设置了 regex101 link

最佳答案

您正在行间查找,您需要在正向查找中使用[\s\S]*?。然而,从性能 Angular 来看,这不是一个好的做法。实现它的快速方法是匹配遵循模式 \S+:.* 的所有行,然后查看它们后面是否有分隔符:

^(?:[^:\s]+:.*\s+)+(?=.*?DIVIDER)

Live demo

var s = `john: buys beer
sam: eats bananas
*** DIVIDER
irrelevant actions
luis: walking
john: buys beer`;

console.log(s.match(/^(?:[^:\s]+:.*\s+)+(?=.*?DIVIDER)/gm));

关于JavaScript 正则表达式 : All matches of a given format up until pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49965239/

相关文章:

regex - 如何使用正则表达式进行 MobaXterm 语法突出显示排除单词?

正则表达式搜索并替换为可选的复数

javascript - 什么是好的 "Pythonic"Web Ajax 数据网格?

javascript - Chrome 开发工具 : Drop into debugger without switching to Sources tab

javascript - 尝试将 html 标记发送到服务器时,Ajax 调用不起作用

javascript - React 和 Electron,链接事件处理程序

javascript - JS RegExp 匹配条目计数

Python HTML 抓取

regex - sed:这个替换命令有什么问题?

javascript - 如何用Enzyme测试子成分法?