regex从字符串中获取数字的第一个示例

vnzz0bqm  于 2023-06-30  发布在  其他
关注(0)|答案(3)|浏览(121)

我从网页返回以下字符串

Order Number: 1509596 Customer Number: 8

但也可能是

Order ID 1509596 Customer 8

我想使用正则表达式,所以在我的方法中,我只是返回订单号,我在做

orderNumber.replaceAll("[^0-9]", "")

但这显然不起作用,因为我的订单号后面有一个8。有人能帮我怎么会只是订单号,因为我在注册前的垃圾!
字符串总是50个字符长,但顺序号是动态的,所以我不知道它会有多长,是否可以只返回字符串中的第一个数字?

wwwo4jvm

wwwo4jvm1#

使用匹配整个输入的正则表达式,捕获您想要的部分,然后替换捕获的所有内容以“提取”您想要的内容。

String firstNumber = str.replaceAll("^\\D*(\\d+).*", "$1");

参见live demo
正则表达式匹配所有前导的非数字(如果有的话),然后匹配下一个捕获组1所找到的数字,然后匹配到末尾。$1是捕获组1的 * 反向引用 *。

ctrmrzij

ctrmrzij2#

我想不出一个单一的行,将完成这一点,但以下应该工作:

String orderString = "Order Number: 1509596 Customer Number: 8";
Pattern p = Pattern.compile("[0-9]+");
Matcher m = p.matcher(orderString);
if (m.find())
{
  String orderNr = m.group();
  System.out.println(orderNr);
}
ctzwtxfj

ctzwtxfj3#

如果更改orderNumber.replaceAll("[^0-9]", "")

orderNumber.replaceAll("[^0-9]", ",")因此
你会得到,1509596,8作为答案,
我想这大概是帮你解决的吧。

相关问题