获取模式组

我有一个字符串

"This order was placed for QT3000! OK?" 

我也有类似的模式

  "(.*)(\\d+)(.*)" 

我认为现在根据模式

group(0):“这个订单是为QT3000订的!好吗?”

group(1):此订单是为QT而下的

第(2)组:3000

小组(3):! 好?

如果有什么问题,请纠正我

谢谢

group(0):“这个订单是为QT3000订的!好吗?”

这当然是对的。

group(1):此订单是为QT而下的

如果你注意到,正则表达式使用贪心量词.*\\d+之前。 因此正则表达式将尽可能多地匹配,并且只留下\\d+的单个数字以匹配。 group(1)实际上将包含 – This order was placed for QT300

第(2)组:3000

它将只包含最后的0 ,而不是3000

小组(3):! 好?

正确。

如果你想在数字之前捕获所有内容,那么最好使用这个正则表达式使用\D*

 ^(\\D*)(\\d+)(.*)$ 

在线演示: http : //regex101.com/r/mE0mW7