Regex 如何使正则表达式不那么贪婪?

Regex 如何使正则表达式不那么贪婪?,regex,Regex,我的正则表达式在90%的情况下都能以令人满意的方式捕获数据,但当它变得过大时除外,它不会匹配两次,而是匹配两次匹配 在一个伪模式中,我试图在{category} 我现有的父亲 #([0-9,]+)\s*in\s*([a-z0-9&\'',+!\-\/\(\)\:\>]+) 还有我想要对抗的东西 Rakings:#2英寸#梅托默克#4英寸t恤衫、包和行头 我希望能和你比赛 #2 in#metoo merch和#4 in t-shirt、bags和swag单独匹配,而不是将整个#2 in#meto

我的正则表达式在90%的情况下都能以令人满意的方式捕获数据,但当它变得过大时除外,它不会匹配两次,而是匹配两次匹配

在一个伪模式中,我试图在{category}

我现有的父亲

#([0-9,]+)\s*in\s*([a-z0-9&\'',+!\-\/\(\)\:\>]+)
还有我想要对抗的东西

Rakings:#2英寸#梅托默克#4英寸t恤衫、包和行头

我希望能和你比赛
#2 in#metoo merch
#4 in t-shirt、bags和swag
单独匹配,而不是将整个
#2 in#metoo merch#4 in t-shirt、bags和swag
作为一个匹配


我已经尝试了正面和负面的外观,但我不太能够解决这个问题。

假设在行尾有一个新行,下面的正则表达式应该可以完成这项工作。它在以
\d
开头的下一个评级之前匹配评级,或者在新行之前匹配评级,这意味着它捕获最后一个评级


(?:(#\d\sin\s.+)(?你绝对想要一个“一次性”正则表达式吗?如果不是,你用哪种语言来解决这个问题?是的,那就是这个想法。如果不是,我的解决方法是用这个模式拆分文本
(?=#([0-9,]+)\s*in)