java - 获取模式组

标签 java regex

我有一个像

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

我也有一个类似的模式

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

现在根据模式,我认为

group(0):“此订单是针对 QT3000 下的!可以吗?”

group(1):此订单是针对 QT 下的

组(2):3000

组(3):!可以吗?

如有错误,请指正

谢谢

最佳答案

group(0): "This order was placed for QT3000! OK?"

这当然是正确的。

group(1): This order was placed for QT

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

group(2): 3000

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

group(3): ! OK?

正确。

关于java - 获取模式组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075643/

相关文章:

java - Java中如何将集合的内容复制到二维数组?

java - 在 Vaadin 中绑定(bind)外键 (EclipseLink)

javascript - 如何在javascript中有效匹配字符串中间的数字?

java - 无法解决 Android 依赖关系

java - 使用 Mockito 注入(inject) DozerBeanMapper

regex - 正则表达式可能无法使用正则表达式在Google Analytics(分析)中运行?

regex - while、数组和正则表达式的组合

php - 正则表达式 : match a word of certain length which starts with certain letters

javascript - javascript 中的正则表达式总是只匹配 1 个字符?

java - Windows 10 通知中的空白图标