正则表达式 --- 反向引用

一、反向引用

圆括号的内容被捕获后,可以在这个括号被使用,从而写出一个比较实用的匹配模式,这个就是反向引用。反向引用既可以在正则表达式的内部,也可以在正则表达式的外部,内部反向引用\\f分组号,外部反向引用$分组号。

package com.jun.regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 反向引用
 */
public class RegExp12 {
    public static void main(String[] args) {
        String content ="hello lili11 tom22 aaa55555 zzz";
        //匹配两个连续的相同数字:(\\d)\\1
       // String regStr ="(\\d)\\1";
        //匹配五个连续的相同数字:(\\d)\\1
        String regStr ="(\\d)\\1{4}";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        while (matcher.find()){
            System.out.println("找到:"+matcher.group(0));
        }

    }
}

 二、结巴去重

package com.jun.regexp;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 结巴去重案
 */
public class RegExp13 {
    public static void main(String[] args) {
        String content = "我..我..要....要....要要......学Java";
        //去除所有的.
        String regStr = "\\.";
        Pattern pattern = Pattern.compile(regStr);
        Matcher matcher = pattern.matcher(content);
        content = matcher.replaceAll("");
        //System.out.println("content:" + content);
        //去除重复的字
        //使用(.)\1+
        //用反向引用$1来替换匹配到的内容
//        pattern = Pattern.compile("(.)\\1+");
//        matcher = pattern.matcher(content);
//        while (matcher.find()) {
//            System.out.println("找到:" + matcher.group(0));
//        }
//        content = matcher.replaceAll("$1");
//        System.out.println("content:"+content);

        //简化上面代码
        content = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1");
        System.out.println("content:"+content);

    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸭鸭老板

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值