正则表达式 案例 结巴去重

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1Eq4y1E79W?p=22

把类似“我……我要……学学学学……编程java”通过正则表达式修改成“我要学编程java”

自己的实现

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

public class RegExp13 {

    public static void main(String[] args) {

        String content = "我我我要要要学学学学编程java!";

        String regStr = "(.)\\1+";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        while (matcher.find()) {

            String str = matcher.group(0);

            content = matcher.replaceFirst(str.charAt(0) + "");

            matcher = pattern.matcher(content);

            System.out.println("content:" + content);

        }

        System.out.println("content:" + content);
        
    }

}
content:我要要要学学学学编程java!
content:我要学学学学编程java!
content:我要学编程java!
content:我要学编程java!


示例:更好的外部反向引用实现方式

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

public class RegExp13 {

    public static void main(String[] args) {

        String content = "我我我要要要学学学学编程java!";

        String regStr = "(.)\\1+";

        Pattern pattern = Pattern.compile(regStr);

        Matcher matcher = pattern.matcher(content);

        //使用 反向引用$1 来替换匹配到的内容
        String newContent = matcher.replaceAll("$1");

        System.out.println("newContent:" + newContent);

    }

}
newContent:我要学编程java!



视频中的原实现