以以下代码为例(从docs修改):
String input = "1 fish 2 fish red sheep blue sheep";
Scanner s = new Scanner(input).useDelimiter("\\s*(fish|sheep)\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
有什么办法可以确定是
sheep
还是fish
匹配? 最佳答案
请改用以下代码:
String input = "1 fish 2 fish red sheep blue sheep";
Pattern pattern = Pattern.compile("\\s*(fish|sheep)\\s*");
Matcher matcher = pattern.matcher(input)
while (matcher.find()) {
System.out.println(matcher.group(1));
}
在此代码中,
matcher.group(1)
返回正则表达式中与组1匹配的值,在本例中为(fish|sheep)
。您可以通过用括号括起来来分组。您还可以获取组0,该组返回整个匹配项。关于java - 如何从Java的Scanner获取匹配的定界符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40923710/