Java basic Regular Expression:获取两个占位符的值

时间:2011-12-28 19:38:07

标签: java regex

String input = scanner.nextLine();
Pattern pattern = Pattern.compile("the [a-z]+ jumped over the [a-z]+ ")
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
    // how do I print out what jumped over what???
}

在这个例子中,有人会输入类似"牛跳过月亮"要么 "狐狸跳过狗"或者"猫跳过鼠标" ... 我需要能够弄清楚它们放入两个占位符的值。 所以我的问题是如何获得正则表达式中两个[a-z] +点的值。

3 个答案:

答案 0 :(得分:3)

您使用由parantheses标记的捕获组:"the ([a-z]+) jumped over the ([a-z]+)"

然后使用matcher.group(1)matcher.group(2)来检索它们(组0始终是整个匹配项)。

答案 1 :(得分:1)

你应该使用一个小组。尝试使用此正则表达式:

"the ([a-z]+) jumped over the ([a-z]+) "

然后使用group(int)方法访问它。这是一个例子:

http://www.exampledepot.com/egs/java.util.regex/GroupInPat.html

答案 2 :(得分:1)

在正则表达式中,使用括号捕获组:

Pattern pattern = Pattern.compile("the ([a-z]+) jumped over the ([a-z]+) ");

如果正则表达式匹配,您可以按如下方式获取捕获的group

String group1 = matcher.group(1);
String group2 = matcher.group(2);