Java正则表达式的替换和分组功能
作者:Anthony_tester 发布时间:2022-01-28 20:20:43
标签:java,正则表达式,替换
前言
这篇来学习正则表达式的替换和分组功能,替换很好理解,分组有点复杂,特别是如何写有效的分组的正则表达式。这篇通过几个练习,简单了解下替换和分组功能。
1.替换功能
在String类有一个替换功能的方法,结合正则表达式去实现替换,下面是replaceAll()方法的举例。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
String str = "wo1shi2zhong3guo4ren";
//需要替换得到 wo shi zhong guo ren
//写一个正则,用空字符替换原字符串的任意数字
String regex = "\\d"; // \d表示任意数字
String target = str.replaceAll(regex, " ");
System.out.println(target);
}
}
2.分组功能
先来看看什么是分组,在API 中Pattern这个类介绍是这样描述的:
捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
1 | ((A)(B(C))) |
2 | (A) |
3 | (B(C)) |
4 | (C) |
我们可以根据数多少个左括号来确定有多少个组。
下面来代码举例分组的正则表达式用法。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
// 1叠词:快快乐乐,高高高兴兴
// 判断字符串是否是上面的叠词规则
String regex = "(.)\\1(.)\\2"; // 这个正则表达式表示 快快乐乐这样的叠词
// 上面(.)表示一个分组,里面.表示任意字符,\\1表示组1又出现了一次,\\2表示组2又出现了一次
System.out.println("快快乐乐".matches(regex));
System.out.println("快乐快乐".matches(regex));
System.out.println("高高兴兴".matches(regex));
System.out.println("快乐乐乐".matches(regex));
}
}
那么如何写“快乐快乐”这样叠词的正则表达式呢。这么去分析一下,字符串“快乐快乐”,可以认为“快乐”这个组又出现了一次,结合上面代码提到的知识,我们应该这样写。
package regex;
public class Demo1_Regex {
public static void main(String[] args) {
// 1叠词:快乐快乐
String regex = "(..)\\1";
System.out.println("快快乐乐".matches(regex));
System.out.println("快乐快乐".matches(regex));
}
}
练习1:按照叠词进行切割
请按照叠词进行切割“sdqqfgkkkhjppppdk”
package regex;
public class Demo1_Split {
public static void main(String[] args) {
String st = "sdqqfgkkkhjppppkl";
String[] arr = st.split("(.)\\1+");
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
输出
sd
fg
hj
kl
来源:https://blog.csdn.net/u011541946/article/details/80034409


猜你喜欢
- 由于工作需要,所以前一阵子将IE升级到了8.0,结果今天发现出现一个问题,eWebEditor的在线编辑器不好用了,仔细想想,肯定是IE8搞
- python-opencv3.0新增了一些比较有用的 * 算法,这里根据官网示例写了一个 * 类程序只能运行在安装有opencv3.0以上版
- 前言之前我们分享过用Python进行可视化的9种常见方式。其实我们还能让可视化图形逼格更高一些,今天就分享一下如何让可视化秀起来:用Pyth
- 数据可视化是任何探索性数据分析或报告的关键步骤,它可以让我们一眼就能洞察数据集。目前有许多非常好的商业智能工具,比如Tableau、goog
- 今儿继续做项目,学习了Django的forms生成前端的代码。forms.pyclass SignupForm(forms.Form): &
- 用ASP实现搜索引擎的功能是一件很方便的事,可是,如何实现类似3721的智能搜索呢?比如,当在搜索条件框内输入“中国人民”时,自动从中提取“
- 钱包基础概念广义上,钱包是一个应用程序,为用户提供交互界面。钱包控制用户访问权限、管理比特比地址及秘钥、跟踪余额、创建交易和签名交易狭义上,
- 前言一段时间没有用Union和Union,再用的时候忘了怎么用了。。。所以做一篇文章来记录自己学Union和Union的经历。提前准备在Sq
- Docker用于开发Docker不仅用于部署,它还可以用于开发。1、为什么要在开发中使用Docker主要有以下几个原因。 1)一致的开发环境
- 在jupyternotebook下导入自己写的模块,有两点需要注意:1.要将自己写的模块编程xxx.py的形式,而不是.ipynb文件2.当
- try { int readByte = 0;  
- 工作中发现表单提交方便的问题,很多时候IE下提交好好的,打了火狐下就出现了问题,利用提交按钮就不成功了,于是利用JS的方式就成功了,也不知道
- 安装jieba库教程jieba库是一款优秀的 Python 第三方中文分词库,jieba 支持三种分词模式:精确模式、全模式和搜索引擎模式,
- 一旦你已经为MySQL实例管理器设置了一个密码文件并且IM正在运行,你可以连接它。你可以使用mysql客户端工具通过标准MySQL API来
- 本文实例为大家分享了python实现日历效果的具体代码,供大家参考,具体内容如下一、代码编程过程1、根据年月日算出星期几def get_we
- 1 Anaconda介绍概述Anaconda,中文大蟒蛇,是一个开源的Anaconda是专注于数据分析的Python发行版本,包含了cond
- 定义通用视图修改 book/models.py 代码中的 AuthorInfo 类,如果一致则不必修改class AuthorInfo(mo
- 专家解答 通过查询任何数据库中的三个系统表,你可以获得每个表的每一个字段的默认值。下面是这个核心查询。它返回分配给当前数据库中每个用户表的默
- mysql-5.7.23-winx64 解压版详细安装教程,供大家参考,具体内容如下1、Click here to download Mys
- 本文实例讲述了Python基于jieba库进行简单分词及词云功能实现方法。分享给大家供大家参考,具体如下:目标:1.导入一个文本文件2.使用