pattern matcher的简单用法举例

Java中正则表达式匹配的用处在Map-reduce的书写方法中十分灵活,map方法经常需要用到正则匹配,简单用法可见以下示例:

import java.util.regex.Matcher;

import java.util.regex.Pattern;
public class Test {

    public static void main(String[] args) throws ClassNotFoundException {
         
        String testText1 = "This is a regular test";
        String testText2 = "regular";      
        
        //1. 第一种,适合一次性编译的方式,每次都需要编译,效率较低。
        System.out.println(Pattern.matches("re.*lar", testText2));
        
        //2. 第二种,先编译的方式        
        Pattern p1 = Pattern.compile("REGULAR", Pattern.CASE_INSENSITIVE);  
        Pattern p2 = Pattern.compile("T.*t");
        Matcher m1 = p1.matcher(testText1);  
        Matcher m2 = p2.matcher(testText1);
        
        //matches方法是对整个字符中的匹配
        if(m1.matches()){
            System.out.println("matches the string.");  
        } else {  
            System.out.println("cannot match the string.");  
        }  
        if(m2.matches()){
            System.out.println("matches the string.");  
        } else {  
            System.out.println("cannot match the string.");  
        }
                
        //find方法是对子字符中的匹配
        if (m1.find()) {  
            System.out.println("finds the word.");  
        } else {  
            System.out.println("cannot find the word.");  
        }  

        
    }

}


另外,可以用group管理匹配的分组,示例如下:

定义:

        Pattern p1 = Pattern.compile("(r.*r) (t.*t)",CASE_INSENSITIVE | Pattern.DOTALL);  //可以同时定义两个用|隔开。

        Matcher m = p1.matcher(testText1);

       此时m1.groupCount()返回为2个组,即(r.*r) 和(t.*t),可以通过m.group(1)和m.group(2)返回两个不同的匹配组的值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值