話不多說,上代碼:
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個空格和一個.