正则表达式匹配整数然后空格的连续模式

Dan*_*ott 2 java regex

我要求用户通过Scannerin Java进行输入,现在我想使用正则表达式解析他们的选择。本质上,我向他们展示了一个项目的枚举列表,他们输入了他们想要选择的项目的编号,用空格分隔。下面是一个例子:

1   yorkshire terrier
2   staffordshire terrier
3   goldfish
4   basset hound
5   hippopotamus 

Type the numbers that correspond to the words you wish to exclude: 3 5
Run Code Online (Sandbox Code Playgroud)

枚举的项目列表可以是几个元素或几百个。我正在使用的当前正则表达式看起来像这样^|\\.\\s+)\\d+\\s+,但我知道这是错误的。我还没有完全理解正则表达式,所以如果你能解释它在做什么,那也会很有帮助!

小智 6

Pattern pattern = new Pattern(^([0-9]*\s+)*[0-9]*$)
Run Code Online (Sandbox Code Playgroud)

正则表达式的解释:

  • ^ : 输入开始
  • [0-9] : 只有数字
  • '*' : 任意位数
  • \s : 一个空格
  • '+' : 至少一个空格
  • '()*' : 任意数量的这个数字空格组合
  • $:输入结束

这会将以下所有输入视为有效:

  • “1”
  • “123 22”
  • “123 23”
  • “123456 33 333 3333”
  • “12321 44 452 23”

等等。