首页 > 编程语言 >Java中正则表达式使用以及asPredicate结合集合与lambda的使用(筛选字符串集合哪些符合正则)

Java中正则表达式使用以及asPredicate结合集合与lambda的使用(筛选字符串集合哪些符合正则)

时间:2022-10-17 16:15:27浏览次数:91  
标签:pStr Java Pattern System asPredicate compile 集合 println out

场景

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

相关文章