场景
Java支持正则表达式,正则表达式表示的是用于扫描和匹配文本的搜索模式。
java中使用Pattern类(java.util.regex包中)表示正则表达式,但是,此类不能直接实例化,只能使用静态工厂方法compile创建实例。
然后再从模式上创建某个输入字符串的Matcher对象,用于匹配输入字符串。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
1、?表示前一个字符是可选的,可以出现零次或者一次
所以字符串中含有badao和bado都可以被匹配到
Pattern pattern = Pattern.compile("bada?o"); String gongzhonghao1 = "badaodechengxvyuan"; String gongzhonghao2 = "badodechengxvyuan"; Matcher matcher1 = pattern.matcher(gongzhonghao1); Matcher matcher2 = pattern.matcher(gongzhonghao2); System.out.println(matcher1.find());//true System.out.println(matcher2.find());//true
2、\\d一个数字
String pStr = "\\d"; String text = "age 50"; System.out.println(Pattern.compile(pStr).matcher(text).find());//true
3、任意一个字母
pStr = "[a..zA..Z]"; System.out.println(Pattern.compile(pStr).matcher(text).find());//true
4、任意个字母,但字母只能在a到j之间,大小写不限
pStr = "([a..jA..J]*)"; System.out.println(Pattern.compile(pStr).matcher(text).find());//true System.out.println(Pattern.compile(pStr).matcher("klmn").find());//false
5、a和b之间有四个字符
pStr = "a....b"; System.out.println(Pattern.compile(pStr).matcher("adjhdb").find());//true System.out.println(Pattern.compile(pStr).matcher("adfb").find());//false
6、其他正则表达式元字符可自行搜索。
7、Java8添加到Pattern类中的一个新方法asPredicate()
可以通过简单的方式将正则表达式与Java集合和对lambda表达式的支持联系起来。
假如有一个正则表达式和一个由字符串组成的集合,哪些字符串可以匹配正则表达式可以通过如下写法
String[] inputs = {"Badao","de11","chengxvyuan22","222"}; List<String> strings = Arrays.asList(inputs); Pattern compile = Pattern.compile("\\d"); List<String> collect = strings.stream().filter(compile.asPredicate()).collect(Collectors.toList()); System.out.println(collect);//[de11, chengxvyuan22, 222]
标签:pStr,Java,Pattern,System,asPredicate,compile,集合,println,out From: https://www.cnblogs.com/badaoliumangqizhi/p/16799541.html