A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rexih 中级黑马   /  2015-6-4 17:02  /  416 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

(一)建立
String regex="";//regex匹配
String input="";//input输入

Pattern p= Pattern.compile(regex);//将给定的正则表达式(regex)编译compile()到模式(Pattern)中。 static Pattern    compile(String regex)      
Matcher m=p.matcher(input);//创建匹配(match)给定输入(input)与此模式的匹配器(Matcher)。 Matcher   matcher(CharSequence input)

(二)处理匹配结果
//如果是用regex匹配全部input则使用。尝试将整个区域与模式匹配:boolean    matches()   
m.matches()
//通常只需要匹配部分input,则使用m.find() 尝试查找与该模式匹配的输入序列的下一个子序列:boolean find([int start])  
//抛出:IndexOutOfBoundsException - 如果开始点小于零或大于输入序列的长度。
  int tmpStart=0
  while(m.find())
  {
    //...
    tmpStart=m.end();//end()返回的是当前与模式匹配的子序列的结尾的位置。
  }

(三)关于捕获
regex中()表示需要捕获的群组,匹配后,得到一个数组存放所有的捕获。
返回此匹配器模式中的捕获组数:int groupCount()//捕获是从1开始计算,0始终表示整个regex,所以想返回整个匹配的子序列可以用m.group()。
返回由以前匹配操作所匹配的输入子序列: String group()            

for(int i=0;i<=m.groupCount();++i)//i=0表示m.group(0)即整个regex的匹配
{
    System.out.print(m.group(i));
    System.out.print(" ,starts at pos:"+m.start(i));
    System.out.print(" ,ends at pos:"+m.end(i));
    System.out.println();
}

(四)替换
1.替换模式与给定替换字符串相匹配的输入序列的每个子序列。String replaceAll(String replacement)  
    m.replaceAll("#");//input的所有与regex匹配的子序列都被替换成"#";
2.替换模式与给定替换字符串匹配的输入序列的第一个子序列。String replaceFirst(String replacement)  
    m.replaceFirst("#");//input第一个与regex匹配的子序列被替换成"#";
3.用捕获的内容进行替换
    m.replaceFirst("$1");//用第一个捕获的内容替换整个与regex匹配的子序列。   

    String forMatch="15851844444aasdddd15851866666ddd15851822222ddd15851899999";//ddd15851877777
    String regex="1[3458]\\d{4}(\\d)\\1{4}";
    Pattern p=Pattern.compile(regex);        
    Matcher m=p.matcher(forMatch);

    int tmpStart=0;
    int cntMatches=0;
    while(m.find(tmpStart))
    {            
        tmpStart=m.end();
        System.out.println("matches "+(++cntMatches)+" : ");
        for(int i=0;i<=m.groupCount();++i)
        {
            System.out.print("match "+i+" : ");
            System.out.print(m.group(i));
            System.out.print(" ,starts at pos:"+m.start(i));
            System.out.print(" ,ends at pos:"+m.end(i));
            System.out.println();
        }
        System.out.println();
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马