JAVA中正则表达式的简单应用

基本应用:

//生成一个模式
Pattern p = Pattern.compile("a{1,3}b{1,3}");
//匹配一个母串
Matcher m = p.matcher("abdbdaabddfabbc");
//查找是否匹配,此操作是下列各操作的前提操作,若不进行查找,下列各操作均会出现异常。
Boolean  b = m.find());   ----true
int start = matcher.start();  //查找匹配串的起始字母的位置 --- 0
int end = matcher.end();   //查找匹配串的结束字母的位置 --- 2

Boolean  b = m.find());  //查找下一个匹配串  ---true

Boolean  b = m.matches()  //查找是否完全匹配  ----false
Boolean  b = m.lookingAt()  //查找是否从头匹配  ---true
//一个模式可以更换其匹配的母串:   m.reset();


可以利用“全部替换”功能将空白符替换为单一空格:

 String patternStr = "//s+";
 String replaceStr = " ";
 Pattern pattern = Pattern.compile(patternStr);
 Matcher matcher = pattern.matcher(“a   b       c   d”);
 return matcher.replaceAll(replaceStr);


高级的替换,每次替换的内容不一样:
        Pattern p = Pattern.compile("a{1,3}b{1,3}");
        Matcher m = p.matcher("abdbdaabddfabbc");
        StringBuffer sb = new StringBuffer();
        boolean f = m.find();
        int i = 0;
        while(f){
            m.appendReplacement(sb, i+"");
            i++;
            f = m.find();
        }
            m.appendTail(sb);
        System.out.println(sb.toString());



分组匹配:

//一个复杂的正则表达式,可以根据括号来分成若干个组,你在进行匹配的时候,可以使用全部内容进行匹配,
//也可以使用其中的某一个组进行匹配。组的编号从0开始,0表示全部,1表示第一组,2表示第二组……
    CharSequence inputStr = "abbabcd";
    String patternStr = "(a(b*))+(c*)";
   
    // Compile and use regular expression
    Pattern pattern = Pattern.compile(patternStr);
    Matcher matcher = pattern.matcher(inputStr);
    boolean matchFound = matcher.find();
   
    if (matchFound) {
        // Get all groups for this match
        for (int i=0; i<=matcher.groupCount(); i++) {
            String groupStr = matcher.group(i);
        }
    }
//对于上述例子,共分3组分别是(a(b*))、(b*)、(c*)
//本来第一组应该匹配abb,但是它发现bb和第二组完全匹配,本着互不干涉的原则,
//第一组只能匹配a,这是分组匹配时一个需要注意的地方。



在求子串起始位置和结束位置时需要注意的地方:

matcher.find();
matcher.end();  //是按照整个模式进行匹配后,子串的结束位置

matcher.find();
matcher.grout(1);
matcher.end();  //是按照组1匹配后,子串的结束位置。



在文件输入流中进行匹配,不合要求的不读取:

        String filename = "infile.txt";
        String pattern = "pattern";
        BufferedReader rd = new BufferedReader(new FileReader(filename));
        rd = new BufferedReader(new RegexReader(rd, pattern));
   
        // Retrieve all lines that match pattern
        String line = null;
        while ((line = rd.readLine()) != null) {
            // line matches the pattern
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值