正则匹配前面的全部数字

开源之夏第三届火热来袭,高校学生82%e4%b8%8e" target="_blank">参与赢万元奖金!>>>

想要匹配桶前面的数字 但是下面的方式匹配的是2 不是12

 str = "2022你好12桶你好182";
 num = str.replaceFirst(".*(\\d+).*桶.*", "$1");
 Assertions.assertEquals("12", num);

可以改用下面的正则实现目标

.*\D(\d+).*桶.*

但是想问下还有没其他方式, 如前向贪婪?

回答

(?<=\D*)\d+(?=.*桶.*)

正则中没有前向贪婪一说 是吧

引用来自“天灯石”的评论

(?<=\D*)\d+(?=.*桶.*)

下面是效果