“正则表达式 案例 结巴去重”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
第43行: 第43行:
 
content:我要学编程java!
 
content:我要学编程java!
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
=== 示例:更好的外部反向引用实现方式 ===
 +
<syntaxhighlight lang="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);
 +
 +
    }
 +
 +
}
 +
</syntaxhighlight><syntaxhighlight lang="console">
 +
newContent:我要学编程java!
 +
</syntaxhighlight>
 +
 +
 +
 +
 +
=== 视频中的原实现 ===

2022年11月20日 (日) 08:19的版本

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!



视频中的原实现