首页 > 解决方案 > 正则表达式在某个字符串之前最后出现的数字

问题描述

我正在尝试创建正则表达式来检索最后一个数字,如果有一个数字或任何数字,如果没有任何来自字符串。例子:

 6 łyżek stopionego masła -> 6
5 łyżek blabla, 6 łyżek masła -> 6
5 łyżek mąki lub masła -> 5

我只匹配 masła (更改变量),因此它必须包含在正则表达式中

编辑:我无法解释我真正需要什么:这是 regex101 示例:https ://regex101.com/r/pEeRk3/1

EDIT2:Emma 的解决方案效果很好,但我还需要解析小数和 2 个多位数字,这意味着它们也会匹配: https ://regex101.com/r/pEeRk3/3 - 我在关联

标签: regex

解决方案


如果您想将最后出现的数字与小数匹配,并且您的单词必须遵循此值,您可以使用环视:

(?<!\S)\d+(?:\.\d+)?(?!\S)(?!.*\d)(?=.*masła)
  • (?<!\S)\d+(?:\.\d+)?(?!\S)将 1+ 位数字与可选过去匹配以匹配点和 1+ 位数字
  • (?!.*\d)断言后面没有数字
  • (?=.*masła)断言右边是你的话

正则表达式演示

或者您可以使用捕获组:

(?<!\S)(\d+(?:\.\d+)?)[^\d\n]* masła(?!\S)[^\d\n]*$

正则表达式演示


推荐阅读