我想从给定列表中查找包含字母和数字的所有字符串。
List<String> list = Arrays.asList("ABC","123ABC","def","def45","2GHI","u3ht",
"zxy","t12pp", "kkk");
对于此示例,它应该仅打印包含字母和数字的字符串: - 123ABC、def45、2GHI、u3ht、tt12pp
我尝试了以下方法,但没有成功。
List<String> alphanNist = list.stream()
.filter(s->s.matches("^[a-zA-Z0-9]*$")
.collect(Collectors.toList());
import java.util.*;
import java.util.stream.Collectors;
import java.util.regex.*;
public class SO72918446 {
public static void main(String args[]) {
Pattern pattern = Pattern.compile("^(?=.*\\d)(?=.*[a-zA-Z]).{2,}$");
List<String> list = Arrays.asList("ABC","123ABC","def","def45","2GHI","u3ht","zxy","t12pp", "kkk");
List<String> alphanNist = list.stream().filter(s->pattern.matcher(s).matches()).collect(Collectors.toList());
System.out.println(alphanNist);
}
}
打印
如果您想知道该图案的含义,您可以参考 regexr.com/6pdb2
[123ABC, def45, 2GHI, u3ht, t12pp]
但是,正如评论所说,如果您也想匹配 ABC,则必须对正则表达式进行一些修改 [(?:\s*[a-zA-Z0-9]{2,}\s*)*] 会在那里工作!