• Pattern:正则表达式的模式类
  • 获取对象的函数Pattern pattern=Pattern.compiler(regex);
  • 功能函数:
  • 1.pattern.split(String targetString);
 
  • Matcher:正则表达式的匹配类
  • 获取对象的函数Matcher matcher=pattern.matcher(String targetString);
  • 功能函数:
  • 匹配功能
  • 1.matcher.mathces();
  • 2.matcher.reset(String targetString);
  • 查找功能
  • 1.方式一:
  • matcher.find(int statIndex);
  • 例子:
    • while(matcher.find(0)){
      • matcher.start();//匹配的起始Index
      • matcher.end()-1;// 匹配的终止Index
    • }
  • 2.方式二:
  • matcher.matches();//全词匹配,类似String.matches(String s);
 
  • 3.方式三:
  • matcher.lookingAt();//—只能匹配一次,matcher.find(0);
  • 注意:
  • matcher.find()会收到lookingAt()的影响
  • 1.先执行matcher.lookingAt();//假设匹配
  • 2.matcher.find();//只会从第二个地方开始匹配(如果有的话)
 
  • 其他的功能函数
  • matcher.start();//匹配的Start Index
  • matcher.end();//匹配的End Index
  • Matcher.appendReplacement(StringBuffer,”replace”);//把匹配的部分进行替换”replace”其他的部分不变
  • Matcher.appendTail(StringBuffer stringBuffer);
  • 例子:
Pattern pattern = Pattern.compile("\\d+");

Matcher matcher=pattern.matcher("123yangyun 123 unun123ddd 143 54647 68678 67568");
StringBuffer stringBuffer=new StringBuffer();
while(matcher.find()){
    System.out.println(matcher.start()+"---"+matcher.end());
    matcher.appendReplacement(stringBuffer,"!!!");
    //matcher.appendTail(stringBuffer);
    System.out.println(stringBuffer.toString());
}

结果:

0---3
!!!
11---14
!!!yangyun !!!
19---22
!!!yangyun !!! unun!!!
26---29
!!!yangyun !!! unun!!!ddd !!!
30---35
!!!yangyun !!! unun!!!ddd !!! !!!
36---41
!!!yangyun !!! unun!!!ddd !!! !!! !!!
42---47
!!!yangyun !!! unun!!!ddd !!! !!! !!! !!!
  • 例子:
Pattern pattern = Pattern.compile("\\d+");

Matcher matcher=pattern.matcher("123yangyun 123 unun123ddd 143 54647 68678 67568");
while(matcher.find()){
    StringBuffer stringBuffer=new StringBuffer();
    System.out.println(matcher.start()+"---"+matcher.end());
    matcher.appendReplacement(stringBuffer,"!!!");
    matcher.appendTail(stringBuffer);
    System.out.println(stringBuffer.toString());
}
0---3
!!!yangyun 123 unun123ddd 143 54647 68678 67568
11---14
yangyun !!! unun123ddd 143 54647 68678 67568
19---22
unun!!!ddd 143 54647 68678 67568
26---29
ddd !!! 54647 68678 67568
30---35
!!! 68678 67568
36---41
!!! 67568
42---47
!!!
 
 
  • 4.Group————与模式regex有关
  • 有括号才有组
  • Pattern pattern=Pattern.compile(Regex);//eg:String regex=new String(“([a-z]+)(\\d+)");
  • Matcher matcher=pattern.Matcher(String target);//目标字符串target
  • while(matcher.find()){
  • System.out.println(matcher.group());//匹配的部分
  • System.out.print(matcher.groupCount());//一定是2
  • }
 

10.Pattern 和 Matcher的更多相关文章

  1. JAVA正则表达式 Pattern和Matcher(转)

    1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher.        首先一个Pattern实例订制了一 ...

  2. java14-4 Pattern和Matcher类的使用

     获取功能  Pattern和Matcher类的使用  模式和匹配器的基本使用顺序 import java.util.regex.Matcher; import java.util.regex.Pat ...

  3. JAVA 正则 Pattern 和 Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  4. Pattern和Matcher

    java util本身提供了Pattern和Matcher(java.util.regex.Pattern,Matcher),两个类均是与正则表达式相关的类,其中: java.util.regex是一 ...

  5. java正则表达式Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  6. Pattern()和Matcher() 用法

    1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.  它包括两个类:Pattern和Matcher . Pattern: 一个Pattern是一个 ...

  7. Java基础知识强化77:正则表达式之获取功能(Pattern 和 Matcher类的使用)

    1. 获取功能: Pattern 和 Matcher类结合使用 2. 使用案例: package cn.itcast_05; import java.util.regex.Matcher; impor ...

  8. java Pattern和Matcher详解

    结论:Pattern与Matcher一起合作.Matcher类提供了对正则表达式的分组支持,以及对正则表达式的多次匹配支持. 单独用Pattern只能使用Pattern.matcher(String ...

  9. JAVA正则表达式 Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

随机推荐

  1. 【转】Python实现不同格式打印九九乘法表

    前言:最近在学习Python,学习资源有慕课网上的视频教程.菜鸟教程以及Python官方文档tutorial.虽然了解了Python的基本语法,但是还没有真正意义上输出自己写的代码.代码小白,之前仅学 ...

  2. Fedora中显示windows下的文件

    目录 一些预备知识: 在中国windows的编码是本地编码 , 即GBK,GB2312,GB18030等 GBK  也就是windows-986 Windows现在只支持Unicode (UTF-16 ...

  3. XF custom render 各平台实现类

    目前的XF还是非常简陋的,所以存在大量的自定义工作.一般情况下我们只是要需要派生原生的XF控件,然后在各平台下修改其呈现方法. 所以了解每个XF控件在不同平台上呈现使用的控件类是有所必须要的.以下别人 ...

  4. 如何在ARM中创建Express Route

    很早之前就想试试Azure的express route,但是一直没有找到合适的机会,正好有个客户需要上express route,所以最近先自己研究研究,防止在做poc的时候耗费更多时间,本次场景我们 ...

  5. 深入理解jsonp跨域请求原理

    在进行网站开发的过程中经常会用到第三方的数据,但是由于同源策略的限制导致ajax不能发送请求,因此也无法获得数据.解决ajax的跨域问题有两种方法: 一.jsop 二.XMLHttpRequest2中 ...

  6. canvas九宫格跑马灯

    canvas九宫格跑马灯抽奖 之前用dom写了一版,部分 安卓机会卡顿,换用canvas dom版本九宫格抽奖

  7. 【Android自学日记】【转】Android Fragment 真正的完全解析(下)

    上篇博客中已经介绍了Fragment产生原因,以及一些基本的用法和各种API,如果你还不了解,请看:Android Fragment 真正的完全解析(上). 本篇将介绍上篇博客提到的:如何管理Frag ...

  8. android:clipChildren属性的作用

    该属性默认为true,这个属性需要添加到最顶层的ViewGroup,作用是控制子View是否可以超出它所在的父View设定的边界 比如ImageView设置高度100dp,而它所在的父View设置的高 ...

  9. Interleaving String

    https://leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is formed by th ...

  10. 部署React+webpack工程的步骤

    # 部署React+webpack工程的步骤ps:以Mac os系统做开发环境.因为npm现在使用灰常的慢,所以我使用淘宝境像cnpm. 1,准备工作: 先确保存已经安装了node.js: 2,文件部 ...