正则表达式 - 匹配模式但返回子模式

时间:2016-07-15 15:47:45

标签: java regex

我想匹配一个模式(使用java编程),但我只需要它的一部分。

示例...来自以下文字:

0 - Amount: 3 - Class 29
1 - Amount: 2 - Class 21
2 - Amount: 11 - Class 1

我希望匹配模式“Amount:\ d * - Class \ d *”,但只返回数字对,以便输出类似于数组:

{
    {3, 29},
    {2, 21},
    {11, 1}
}

我可以使用java正则表达式中实现的东西吗?我认为搜索匹配的字符串是不必要的,正则表达式似乎已经为这类问题做好了准备。

并且...正则表达式(通常,不仅是java正则表达式)有一个工具,因此从匹配的字符串中提取信息不需要额外的编程吗?我可以切换编程语言,如果其他正则表达式的实现比java的更好。

1 个答案:

答案 0 :(得分:1)

您只需在正则表达式中使用括号来使用捕获组:

.dynamic = false

Regular expression visualization

<强> Working demo

然后,您必须使用Amount: (\d*) - Class (\d*) ^--^-- Here---^---^ \1抓取他们的内容。在java中,您必须使用\2。例如,您可以使用以下代码:

matcher.group(n)

<强> Full IdeOne code