【发布时间】:2018-06-16 17:33:41
【问题描述】:
我只是在练习一些编码问题,我得到了类似的问题定义
给定一个数字数组,任务是只打印那些只有 1、2 和 3 作为数字的数字。
为此我编写了这样的代码
public class PrintArrays {
public static void main(String[] args) {
PrintArrays p = new PrintArrays();
List<Integer> list = p.findNumbers(new int[]{22,123,456,145,5,3,000,10,453});
String s = new String("23");
list.forEach(data -> System.out.println(data));
}
private List<Integer> findNumbers(int[] is) {
List<Integer> list = new ArrayList<>();
Arrays.stream(is)
.filter(data -> !String.valueOf(data)
.matches("(0|[a-zA-Z4-9].*)"))//tried to match if it contains alphabets or any other number apart from 1,2,3
.sorted()
.forEach(data -> list
.add(data));
return list;
}
}
我的愿望输出是
3
22
123
我得到了什么:
3
10
22
123
145
请帮助我改进我的正则表达式
【问题讨论】:
-
你为什么是否定匹配?在此处创建正则表达式要容易得多。
-
我首先做了我想到的,你的方法很容易
标签: java regex lambda regex-group