首页 > 解决方案 > 如何使惰性正则表达式搜索优先于另一个匹配?

问题描述

给定一个字符串,例如"happy days",我希望能够将“days”作为最高优先级进行匹配,如果我得到它就停止匹配。如果我不喜欢,我想匹配“快乐”以及它之后的任何内容。因此,例如"happy dogs"会返回匹配“快乐的狗”,而"happy days"只会返回“天”。我想尝试类似的东西(days|happy\s*\w*)?。这个想法是“天”被放在第一位,并且会快速匹配并退出(因为我们处于惰性模式)。但相反,它与完整的“快乐日子”相匹配。我怎样才能实现这个功能?

标签: regexregex-greedy

解决方案


在这种特定情况下,您必须首先使用贪心点消耗输入字符串,然后使引擎回溯:

^.*(days|happy\s*\w*)

现场演示


推荐阅读