我有这个虚拟输入数据:john: buys beersam: eats bananas*** DIVIDERirrelevant actionsluis: walking
捕获人的行为的regex
:/^[\S]*:.*/gm
我需要对其进行修改,以使其仅包括在文本下方达到指定模式(*** DIVIDER
)的操作。
我以为我可能会使用例如/^[\S]*:.*(?=[\S]*\sDIVIDER)/gm
,但是由于某些原因,它无法正常工作。
我设置要播放的regex101 link
最佳答案
您正在各行中寻找,需要在正向提前中使用[\s\S]*?
。但是,明智地谈论性能并不是一个好习惯。一种快速的实现方法是匹配模式\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 - JavaScript RegExp:给定格式的所有匹配项,直到模式为止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49965239/