我要求用户通过 Java 中的 Scanner
输入,现在我想使用正则表达式解析他们的选择。本质上,我向他们展示了一个枚举的项目列表,然后他们输入要选择的项目的数字,并用空格分隔。这是一个例子:
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
枚举的项目列表可以是几个元素,也可以是数百个。我当前使用的正则表达式看起来像这样 ^|\\.\\s+)\\d+\\s+
,但我知道这是错误的。我还不完全理解正则表达式,所以如果你能解释它在做什么,那也会很有帮助!
最佳答案
Pattern pattern = new Pattern(^([0-9]*\s+)*[0-9]*$)
正则表达式的解释:
- ^:输入开始
- [0-9]:仅数字
- '*':任意数量的数字
- \s:空格
- '+':至少一个空格
- '()*' :任意数量的该数字空格组合
- $:输入结束
这会将以下所有输入视为有效:
- “1”
- “123 22”
- “123 23”
- “123456 33 333 3333”
- “12321 44 452 23”
等等
关于java - 正则表达式匹配整数然后空格的连续模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23089348/