给定"happy days"
之类的字符串,我希望能够将“days”作为最高优先级进行匹配,如果我得到它就停止匹配。如果我不喜欢,我想要“快乐”和之后发生的任何事情。因此,例如"happy dogs"
将返回匹配“快乐的狗”,而"happy days"
将返回“天”。我想过尝试像(days|happy\s*\w*)?
这样的东西。这个想法是'天'被放在第一位并且会很快匹配并退出(因为我们处于懒惰模式)。但相反,它与完整的“快乐时光”相匹配。我该如何实现此功能?
答案 0 :(得分:1)
在这种特殊情况下,您必须首先使用贪婪点消耗输入字符串,然后使引擎回溯:
(2015/12/27,12AM,32.0)
(2015/12/27,12PM,34.0)
(2015/12/28,10AM,26.1)
(2015/12/28,10PM,28.0)
(2015/12/28,11AM,27.0)
(2015/12/28,11PM,28.9)
(2015/12/28,12AM,25.0)
(2015/12/28,12PM,26.100000000000005)
(2015/12/29,10AM,22.45)
(2015/12/29,10PM,26.1)
(2015/12/29,11AM,24.1)
(2015/12/29,11PM,25.0)
(2015/12/29,12AM,28.9)
答案 1 :(得分:0)
您也可以使用否定前瞻:
console.log("happy days".match(/days|happy(?!.*days.*).*/)[0])
console.log("happy dogs".match(/days|happy(?!.*days.*).*/)[0])