查看“正则表达式 案例 结巴去重”的源代码
←
正则表达式 案例 结巴去重
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
https://www.bilibili.com/video/BV1Eq4y1E79W?p=22 把类似“我……我要……学学学学……编程java”通过正则表达式修改成“我要学编程java” === 自己的实现 === <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); 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); } } </syntaxhighlight><syntaxhighlight lang="console"> content:我要要要学学学学编程java! content:我要学学学学编程java! content:我要学编程java! content:我要学编程java! </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> === 视频中的原实现 === <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!"; //1、去掉所有的. Pattern pattern = Pattern.compile("\\."); Matcher matcher = pattern.matcher(content); content = matcher.replaceAll(""); System.out.println("content=" + content); //2.去掉重复的字 // 思路 //(1)使用 (.)\\1+ //(2)使用 反向引用$1 来替换匹配到的内容 // 注意:因为正则表达式变化,所以需要重置 matcher pattern = Pattern.compile("(.)\\1+");//分组的捕获内容记录到$1 matcher = pattern.matcher(content); while (matcher.find()) { System.out.println("找到=" + matcher.group(0)); } //使用 反向引用$1 来替换匹配到的内容 String newContent = matcher.replaceAll("$1"); System.out.println("newContent:" + newContent); } } </syntaxhighlight><syntaxhighlight lang="console"> content=我我要学学学学编程java! 找到=我我 找到=学学学学 newContent:我要学编程java! </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!"; //1、去掉所有的. Pattern pattern = Pattern.compile("\\."); Matcher matcher = pattern.matcher(content); content = matcher.replaceAll(""); System.out.println("content=" + content); //2.去掉重复的字 // 思路 //(1)使用 (.)\\1+ //(2)使用 反向引用$1 来替换匹配到的内容 // 注意:因为正则表达式变化,所以需要重置 matcher String newContent = Pattern.compile("(.)\\1+").matcher(content).replaceAll("$1"); System.out.println("newContent:" + newContent); } } </syntaxhighlight><syntaxhighlight lang="console"> content=我我要学学学学编程java! newContent:我要学编程java! </syntaxhighlight>
返回至
正则表达式 案例 结巴去重
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
Spring Boot 2 零基础入门
Spring Cloud
Spring Boot
设计模式之禅
VUE
Vuex
Maven
算法
技能树
Wireshark
IntelliJ IDEA
ElasticSearch
VirtualBox
软考
正则表达式
程序员精讲
软件设计师精讲
初级程序员 历年真题
C
SQL
Java
FFmpeg
Redis
Kafka
MySQL
Spring
Docker
JMeter
Apache
Linux
Windows
Git
ZooKeeper
设计模式
Python
MyBatis
软件
数学
PHP
IntelliJ IDEA
CS基础知识
网络
项目
未分类
MediaWiki
镜像
问题
健身
国债
英语
烹饪
常见术语
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息