【发布时间】:2019-07-30 20:16:04
【问题描述】:
我有一个包含数字的字符串,但不仅是数字(实际上任何字母数字字符都可能存在),我必须从该字符串中提取每个有效的正整数并将其添加到列表中。
我尝试过使用 find() 方法和模式“\d+”,但是当输入字符串以整数开头时会出现问题。不会提取输入字符串开头的那个整数。
Pattern reg = Pattern.compile("\\d+");
Matcher test = reg.matcher( "988 5454 754");
boolean matches = test.matches();
List<String> numbers = new ArrayList<>();
while (test.find()) {
numbers.add(test.group(0));
}
我希望第一次迭代中的第 0 组包含 988,第二次迭代中包含 5454,第三次迭代中包含 754,但是当字符串以整数开头时,它无法提取数字 988。
我只提取数字 5454 和 754。
我的正则表达式模式有什么错误吗?
编辑: 我已经完成了代码。你可以看到,matches() 方法的调用导致了这里的问题。
【问题讨论】:
-
你能发一个minimal reproducible example吗?我看不出为什么您的代码不会打印所有 3 个匹配项。
-
我刚刚运行了您的代码并打印了
number数组,它包含所有 3 个数字:988 5454 754。您能否发布一个重现您的错误的示例?