我想匹配一个模式(使用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的更好。
答案 0 :(得分:1)
您只需在正则表达式中使用括号来使用捕获组:
.dynamic = false
<强> Working demo 强>
然后,您必须使用Amount: (\d*) - Class (\d*)
^--^-- Here---^---^
和\1
抓取他们的内容。在java中,您必须使用\2
。例如,您可以使用以下代码:
matcher.group(n)
<强> Full IdeOne code 强>