正则表达式从字符串中获取数字的第一个实例

时间:2014-01-29 10:00:31

标签: java regex

我从网页

返回以下字符串
Order Number: 1509596 Customer Number: 8

但它也可能是

Order ID 1509596 Customer 8

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

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

但这显然不起作用,因为我的订单号末尾有一个8。有人可以帮我解决订单号码,因为我在reg ex垃圾!

字符串总是50个字符,但订单号是动态的,所以我不知道它会有多长,是否可以只返回字符串中的第一个数字?

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

我想不出能够实现这一目标的单行,但以下内容应该有效:

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);
}

答案 2 :(得分:1)

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

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

你会得到,1509596,8作为答案,

我认为这可能有助于你解决问题。