获得模式的组

时间:2014-01-12 14:13:27

标签: java regex

我有一个像

这样的字符串
           "This order was placed for QT3000! OK?"

我也有像

这样的模式
             "(.*)(\\d+)(.*)"

现在根据模式,我认为

组(0):“此订单是针对QT3000的!好吗?”

组(1):此订单是为QT而放置的

组(2):3000

组(3):! OK?

如果有任何不妥之处,请纠正我

谢谢

2 个答案:

答案 0 :(得分:3)

  

组(0):“此订单是针对QT3000的!好吗?”

这当然是正确的。

  

组(1):此订单是为QT而放置的

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

  

组(2):3000

它只包含最后一个0,而不是3000

  

组(3):! OK?

正确。

答案 1 :(得分:3)

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

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

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