场景

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]

 

原文地址:http://www.cnblogs.com/badaoliumangqizhi/p/16799541.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性