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

总结

到此这篇关于Java正则表达式的替换和分组功能的文章就介绍到这了,更多相关Java正则的替换和分组内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 学习Java正则表达式(匹配、替换、查找)

    本文为大家分享了Java正则表达式的匹配.替换.查找和切割操作,有兴趣的朋友可以参考一下 import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { getStrings(); //用正则表达式获取指定字符串内容中的指定内容 System.out.pri

  • java正则表达式获取指定HTML标签的指定属性值且替换的方法

    实例如下: public static String repDomain(String source, String domain, String element, String attr) { String img = ""; Pattern p_image; Matcher m_image; String regEx_img = "<" + element + "[^<>]*?\\s" + attr + "=['\

  • JAVA中正则表达式匹配,替换,查找,切割的方法

    正则表达式的查找;主要是用到String类中的split(); String str; str.split();方法中传入按照什么规则截取,返回一个String数组 常见的截取规则: str.split("\\.")按照.来截取 str.split(" ")按照空格截取 str.split("cc+")按照c字符来截取,2个c或以上 str.split((1)\\.+)按照字符串中含有2个字符或以上的地方截取(1)表示分组为1 截取的例子; 按照

  • Java正则表达式(匹配、切割、替换、获取)等方法

    正则表达式:符合一定规则的表达式 作用:用于专门操作字符串 特点:用于一些特定的符号来表示一些代码操作,这样就简化书写,主要是学习一些特殊符号的使用 好处:可以简化对字符串的复杂操作. 弊端:符号定义越多,正则越长,阅读性越差 具体操作: 1.匹配:String matches方法 用规则匹配所有的字符串,只要有一个不符合,则匹配结束. 2.切割:String sqlit(); 3.替换:replaceAll(); 4.获取:将字符串中的符合规则的子串取出. 操作步骤: 首先,将正则表大式封装成

  • Java基于正则表达式实现的替换匹配文本功能【经典实例】

    本文实例讲述了Java基于正则表达式实现的替换匹配文本功能.分享给大家供大家参考,具体如下: package replaceDemo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替换匹配的文本 */ public class ReplaceDemo { public static void main(String[] args) { // 创建一个正则表达式模式

  • Java替换中使用正则表达式实现中间模糊匹配的方法

    使用".+?"实现中间模糊匹配的代码: public class Test { public static void main(String[] args) { String str="总会在某一个回眸的时刻醉了流年,濡湿了柔软的心.总会有某一个回眸的时刻醉了流年,濡湿了柔软的心"; str=str.replaceAll("总会在.+?流年", "总会有某一个回眸的时刻醉了流年"); System.out.println(st

  • Java正则表达式的替换和分组功能

    前言 这篇来学习正则表达式的替换和分组功能,替换很好理解,分组有点复杂,特别是如何写有效的分组的正则表达式.这篇通过几个练习,简单了解下替换和分组功能. 1.替换功能 在String类有一个替换功能的方法,结合正则表达式去实现替换,下面是replaceAll()方法的举例. package regex; public class Demo1_Regex { public static void main(String[] args) { String str = "wo1shi2zhong3gu

  • PHP正则表达式匹配替换与分割功能实例浅析

    本文实例讲述了PHP正则表达式匹配替换与分割功能.分享给大家供大家参考,具体如下: 正则表达式在PHP中的作用主要包括:分割.匹配.查找与替换. 匹配功能 preg_match_all 全部匹配函数 preg_match_all (string pattern,string subject,array matches[, int flags]); 对结果的排序使 $matches[0] 为全部模式匹配的数组. 用途:截取比较精确的内容,用于采集网页,分析文本等. 替换功能 preg_replac

  • 如何利用JAVA正则表达式轻松替换JSON中的大字段

    (一)背景 在软件开发工作中我们经常用JSON来传输数据,根据业务需要不免会在JSON数据中传输比较大的数据,有时传输一个图片数据会达到几百K或者几M,而这些大字段数据在记录日志时,不论是文件日志还是数据库日志,都会造成大量的IO处理,使接口的响应速度大幅下降,同时会增加服务的负载,降低系统的性能.这时我们可以选择不输出这个JSON数据,但往往这样会造成更大的问题,因此我们会想如果只不输出大字段数据,而其他数据正常输出就好了,但从技术上往往不易实现.本文就是给大家提供一种方法,利用JAVA的正则

  • Java正则表达式学习之分组与替换

    正则表达式的子表达式(分组)不是很好懂,但却是很强大的文本处理工具. 1 正则表达式热身 匹配电话号码 // 电话号码匹配 // 手机号段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304072984".matches("1[3578]\\d{9}")); // true // 座机号:010-65784236,0316-3312617,022-12465647,03123312336 String regex

  • Java正则表达式之分组和替换方式

    目录 1 正则表达式热身 匹配电话号码 匹配邮箱 特殊字符替换 2 分组 3 分组替换 4 反向引用 5 反向引用替换 正则表达式的子表达式(分组)不是很好懂,但却是很强大的文本处理工具. 1 正则表达式热身 匹配电话号码 // 电话号码匹配 // 手机号段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304072984".matches("1[3578]\\d{9}")); // true // 座机号:010

  • Java 正则表达式功能及应用

    正则表达式,就是用某种模式去匹配一类字符串的一个公式,正则表达式由一些普通字符和一些元字符(metacharacters)组成.普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,不管是.Net平台还是Java平台,正则表达式表达的意思都是一样的,下面我们主要分析Java正则表达式中的功能和具体应用,希望文章对您有所帮助,仅供参考. 自从jdk1.4推出java.util.regex包,就为我们提供了很好的Java正则表达式应用平台,因为Java正则表达式是一个很庞杂的体系. \\ 反斜杠

  • Java使用正则表达式实现找出数字功能示例

    本文实例讲述了Java使用正则表达式实现找出数字功能.分享给大家供大家参考,具体如下: 1.问题: String str = "fjd789klsd908434jk#$$%%^38488545",从中找出78990843438488545,请找到解决办法 2.实现代码: /** * */ package com.you.model; /** * @author YouHaidong * */ public class FindNumber { /** * 字符串str */ publi

  • JS使用正则表达式实现关键字替换加粗功能示例

    本文实例讲述了JS使用正则表达式实现关键字替换加粗功能的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

随机推荐