话不多说,上代码:
List<String> list = new ArrayList<String>(){
{
// list初始数据
addAll(Arrays.asList("puyuma0216puyuma".split("")));//将数组转化为list
add("puyuma");
add("0216");
add("puyuma0216") ;
}
};
System.out.println("list初始数据:" + list);
Pattern pattern = Pattern.compile("\\d");//正则表达式匹配数字
Predicate<String> filter = s -> pattern.matcher(s).find();
list.removeIf(filter);
//上面三行代码可以写成
//list.removeIf(s -> Pattern.compile("\\d").matcher(s).find());
System.out.println("list移除后的数据:" + list);
控制台打印如下:
附上java Pattern相关正则表达式:
Pattern pattern=Pattern.compile(".*java"); //所有以java结尾的字符
pattern=Pattern.compile("^[\\d]*$"); //匹配所有长度的数字
pattern=Pattern.compile("^[\\d]{2}$"); //匹配2个长度的数字
pattern=Pattern.compile("^[\\d]{2}[\\D]$"); //匹配2个长度的数字,并且第三个字符必须不是数字
pattern=Pattern.compile("^[\\d]{2}.*[w]$"); //匹配2个长度的数字,中间字符是任意长度的字符,并且最后一个字符是w
pattern=Pattern.compile("^[\\d]{2}[a|b][w]$"); //匹配2个长度的数字,中间字符只能是a和b字符,并且最后一个字符是w
pattern=Pattern.compile("^[aa]$"); //匹配1个长度的a
pattern=Pattern.compile("^[aa||bb]$"); //匹配1个长度的a或1个长度的b
pattern=Pattern.compile("^[a||[0-9]]$"); //匹配1个长度的a或1个长度的0-9
pattern=Pattern.compile("^[0-9]{2}[a-z]{1}[0-9]{2}$"); //匹配2个长度的0-9和1个长度的a-z和2个长度的0-9
pattern=Pattern.compile("^[[a-z]||[0-9]]{2}$"); //匹配2个长度的a-z和2个长度的0-9,或者a-z,0-9两个任意字符
pattern=Pattern.compile("^[[a-z]&[0-9]]{2}$"); //匹配2个长度的a-z和2个长度的0-9 ,或者a-z,0-9两个任意字符,同上
pattern=Pattern.compile("^[[a-z]|[0-9]]{2}$"); //匹配2个长度的a-z和2个长度的0-9 ,或者a-z,0-9两个任意字符,同上
pattern=Pattern.compile("\r\\\\."); //匹配1个空格和两个\\
pattern=Pattern.compile("\r\\."); //匹配1个空格和一个.