设为首页 加入收藏

TOP

Java正则表达式应用小结(一)
2018-12-02 22:09:06 】 浏览:37
Tags:Java 正则 表达式 应用 小结

关于Java正则表达式应用的心得体会,做个总结。


案例:
 Pattern p = Pattern.compile("a*b"); // 生成Pattern实例(设置匹配模式【规则】)- 静态方法
 Matcher m = p.matcher("aaaaab");    // 生成Match实例(设置匹配选手【报名】)
 boolean b = m.matches();            // 匹配选手按匹配模式进行匹配操作【全部】-属简单用法
 等价于:
 boolean b = Pattern.matches("a*b", "aaaaab"); // 静态方法 -属简单用法


 总结: 
 Pattern.compile(regex).matcher(input).matches() // 案例的链式写法 -属简单用法
 等价于: 
 Pattern.matches(regex, input); // 静态方法-属简单用法
 
【两个层面】:
一、Pattern层 ——> 靠Pattern.compile()方法生成


 p.pattern():获得匹配模式【规则】(正则表达式)的字符串形式
 p.split(input):用p匹配模式分割input字符串,返回字符串数组
 
 简单用法:Pattern.matches(regex, input); // 静态方法


二、Matcher层 ——> 依赖于Pattern层而存在,靠p.matcher()方法生成


 m.pattern():获得匹配模式【规则】(正则表达式)的字符串形式 


 m.matches():对匹配选手(整个字符串)进行完全匹配[简单用法] ——> 返回布尔值
 【若开头部分能匹配成功,指针将移动至开头,但不能获取结果,匹配失败则不移动索引指针】
 m.lookingAt():始终只对匹配选手开头部分的字符串进行匹配 ——> 返回布尔值
 【若开头部分能匹配成功,指针将移动至开头,但能获取结果,匹配失败则不移动索引指针】
 m.find():对字符串按索引指针位置进行迭代匹配 ——> 返回布尔值
 【每次匹配成功都会移动索引指针至最近一次匹配成功的开头,能拿到匹配结果,匹配失败则不移动索引指针】


 m.start():返回最近一次匹配的初始索引
 m.end():返回最近一次匹配的结束索引
 m.group():返回最近一次匹配的子字符串
 
  如果有分组,那么:
  m.groupCount():返回p匹配模式中的分组总数
  m.start(i):返回最近一次匹配的第i个分组的初始索引
  m.end(i):返回最近一次匹配的第i个分组的结束索引
  m.group(i):返回最近一次匹配的第i个分组的子字符串


举例如下:


        System.out.println("加载配置信息");
        System.out.println("通过加载配置信息加载一个代理工厂Map:");
        System.out.println("这个Map存放的是接口Class与对应的代理工厂");
        MyInterface myInterface = new SqlSession().getMapper(MyInterface.class);
        List<Object> list = myInterface.query(new Object());
        System.out.println(list.size());
        Pattern p = Pattern.compile("\\d+");
        System.out.println(p.pattern());
        System.out.println(p.toString());
        System.out.println(p.flags());
        System.out.println("++++++++++++++++++++++");
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee").length);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[0]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[1]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[2]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[3]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[4]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[5]);
        System.out.println(p.split("a3b896cd3265ef123g456hh789987gg456ee")[6]);
        System.out.println(p.split(&quo
编程开发网

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C语言求水仙花数代码解析 下一篇排序算法之冒泡排序改进算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }