首页 > 解决方案 > 正则表达式从句子中获取金额不适用于一种情况

问题描述

我是正则表达式的新手。我需要从句子中提取数量:

手表售价2,550卢比,仅限399.59卢比以下的童装,仅限板球拍590卢比

我创建了一个正则表达式,它提取了前两个金额并尝试了第三个,但它仍然无法正常工作。有人可以帮忙吗。

我的正则表达式 -(?i)\\b(\\d+(?:[.,]\\d+)?)

标签: javaregex

解决方案


开头的单词边界阻止了 INR590 匹配。但是如果你省略了这个词的边界,你会在更多的地方匹配数字。

对于示例字符串,您可以使模式更具体一些,并在模式的末尾添加一个单词边界。

(?i)\bINR\h*(\d+(?:[.,]\d+)?)\b

正则表达式演示

在 Java 中:

String regex = "(?i)\\bINR\\h*(\\d+(?:[.,]\\d+)?)\\b";

例如,您还可以断言直接在左侧的是空格或另一个允许的字符:

(?<=\h|[A-Z])\d+(?:[.,]\d+)?\b

正则表达式演示


推荐阅读