`

正则表达式以及正则表达式在字符串的替换、切割、获取中的应用

阅读更多

        正则:正,乃合于法则也;则,规则也。正则,正规,常规是也。

元字符:

        Java中正则表达式含有一些具有特殊意义字符的字符串,这些字符成为正则表达式的元字符。

        例如:\\dcat中的\\d就是有特殊意义的元字符,代表了0~9中的任意一个数字。

        下表列出了部分常用元字符及其意义:

元字符
元字符 在正则表达式中的写法 意义
. . 代表任何一个字符
\d \\d 代表0~9任意一个数字
\D \\D 代表任何一个非数字字符
\s \\s 代表空格类字符,'\t','\n‘,'\x0B','\f','\r'
\S \\S 代表非空格类字符
\w \\w 代表可用于标识符的字符(不包括美元符号)
\W \\W 代表不能用于标识符的字符

 

        正则表达式中:“[ ]”括起若干字符=>表示一个元字符,该元字符代表“[ ]”中的任何一个字符。

        例如:regex = “[159]ABC”;表示"1ABC”、"5ABC”、"9ABC”都是和正则表达式regex匹配的字符串。

限定修饰符:

        常用限定修饰符用法如下表:

 

限定符
带限定修饰符的模式 意义
X? X出现0次或1次
X* X出现0次或多次
X+ X出现1次或多次
X{n} X恰好出现n次
X{n,} X至少出现n次
X{n,m} X出现n次至m次
XY X的后缀是Y
X|Y X或Y

        以下代码是判断给定字符串是否全由英文字母所组成:

package sj.RegularExpression_v01;

/**
 * 判断给定字符串是否全由英文字母组成
 * @author Songjie_xuan
 *
 */
public class Judge_Letter {

	public static void main(String[] args) {
		
		String str1 = "afadfhadfjoadsjfad";
		String str2 = "afadsfasdf;adfasd ;";
		
		// 定义正则表达式
		String regex = "[a-zA-Z]+";
		
		test(str1,regex);
		test(str2,regex);
	}

	private static void test(String str, String regex) {
		
		if(str.matches(regex)) {
			System.out.println(str+"都是由英文字符组成的");
		} else
			System.out.println(str+"不都是由英文字符组成的");
	}
}

         测试结果如下:


 

到此,大致上了解了正则表达式,那么正则表达式到底有什么用呢?下面就做一些简单的介绍:

1.字符串的替换:

        Java中可以利用正则表达式将给定字符串中的指定字符或字符串替换成另外的字符或字符串。具体做法是用字符串对象调用public String replaceAll(String regex,String replacement)方法返回一个字符串,该方法中replacement表示替换后的字符串。实际应用如下:

package sj.RegularExpression;

/**
 * 替换
 * 
 * @author Songjie_xuan
 * @time 2014-10-13
 */
public class Replace_Demo {

	public static void main(String[] args) {

		//
		String str = "我...要...要..吃..吃...饭!";
		
		System.out.println("替换前:\n" + str);
		String regex_Str = "\\.+";
		String new_Str = "";
		str = replace_Meth(str, regex_Str, new_Str);
		
		regex_Str = "(.)\\1+";
		new_Str = "$1";
		replace_Meth(str, regex_Str, new_Str);
	}

	/**
	 * 替换
	 * 
	 * @param all_Str
	 *            =>所有字符串
	 * @param regex_Str
	 *            =>被替换的字符串
	 * @param str
	 *            =>指定替换成该字符串
	 */
	public static String replace_Meth(String all_Str, String regex_Str, String str) {

		// str调用replaceAll(regex_Str, str)方法进行替换
		String new_Str = all_Str.replaceAll(regex_Str, str);

		// 输出替换后的字符串
		System.out.println("替换后:\n" + new_Str);
		
		return new_Str;
	}
}

         测试结果如图:



 注意:该方法不会改变当前字符串。

2.字符串的分割

        正则表达式还可以将字符串按照给定的分隔字符分割字符串。具体做法是字符串调用public String[] split(String regex)方法,参数regex是分割字符串的分隔符。实际应用如下:

package sj.RegularExpression;

/**
 * 分隔
 * 
 * @author Songjie_xuan
 * @time 2014-10-13
 */
public class Split_Demo {

	public static void main(String[] args) {

		// **一般分隔式切割**
		// String str = "七夜,杨亦风,魔雨,魔雷,魔电";
		// String regex_Str = ",";
		// out_Split(str, regex_Str);

		// **点分隔式切割**
		// String str = "七  夜.杨亦风.魔  雨.魔  雷.魔  电";
		// String regex_Str = "\\.";
		// out_Split(str, regex_Str);

		// **"\"式切割
		String str = "F:\\冷锋SJ记忆\\冷锋\\资料\\学习资料\\编程语言\\Java";
		String regex_Str = "\\\\";
		out_Split(str, regex_Str);

		// **多空格分隔式切割**
		// String str = "七夜 杨亦风  魔 雨   魔雷    魔电";
		// String regex_Str = " +";
		// out_Split(str, regex_Str);

		// **叠词切割**
		// String str = "cfgaaaabbcdfajdfkddaaaaff";
		// String regex_Str = "aa+";
		// out_Split(str, regex_Str);

		// **表达式重用**
		// 分组:使用()对正则表达式分组,每个分组有一个编号
		// "(.)\\第几组"引用该组
		// String str = "cfgaacbbdfajddfaakaaaafhf";
		// String regex_Str = "(.)\\1+";
		// out_Split(str, regex_Str);
	}

	public static void out_Split(String str, String regex) {

		System.out.println(str);

		String[] str_Arr = str.split(regex);
		// 加强遍历
		for (String test_Str : str_Arr) {
			System.out.println(test_Str);
		}
	}
}

 

3.字符串的提取

        正则表达式还可以从字符串中提取指定的字符或字符串。实际应用如下:

package sj.RegularExpression;

import java.util.regex.*;

/**
 * 获取
 * 
 * @author Songjie_xuan
 * @time 201-10-13
 */
public class Get_Demo {

	public static void main(String[] args) {

		String _Str = "is equivalent to the three statements above abc cds afd adf";

		// **获取给定字符串中的所有单词**
		// 定义正则表达式re_Str
		// 代表从给定的字符串中获取由3个字母组成的单词
		String re_Str = "\\b[a-zA-Z]{3}\\b";

		// 将正则表达式编译成Pattern对象
		Pattern p = Pattern.compile(re_Str);

		// 将要处理的字符串和正则表达式关联起来,得到一个匹配器对象
		Matcher m = p.matcher(_Str);

		// 调用find()方法进行匹配
		while (m.find()) {
			String s = m.group();
			System.out.println(s);
		}
	}
}

 测试结果如下:


  • 大小: 15.6 KB
  • 大小: 17 KB
  • 大小: 12 KB
1
0
分享到:
评论

相关推荐

    jJAVA正则表达式替换字符

    其中包括5个类,这5个类的代码基本概括了java正则表达式替换String的多种情况,比如获取某个文件路径中盘符/后边的部分内容,提取"<title>XXXX</title>"中的文字XXXX,用正则表达式获取指定字符串内容中的指定内容,...

    正则表达式的运用(字符串切割)

    本文将深入探讨正则表达式在处理字符串,尤其是涉及数字、字母以及特殊字符时的应用。 1. **特殊字符换颜色**:在显示文本时,有时我们需要突出显示某些特殊字符,如数字或特定符号。通过正则表达式,我们可以匹配...

    c# 实验十一字符串和正则表达式

    实验十一的主要目标是深入理解和熟练运用字符串的创建、管理以及格式化,同时掌握正则表达式的运用,这些是C#开发中不可或缺的技能。 首先,我们要了解字符串的创建。在C#中,可以使用双引号来直接初始化一个字符串...

    正则表达式工具The Regulator

    4. **文本处理**:在自动化脚本中,正则表达式可用于处理文本,如切割字符串、去除空白字符等。 The Regulator作为一款强大的正则表达式工具,它将复杂的正则表达式操作变得简单易用,无论是初学者还是经验丰富的...

    [小小明]Python正则表达式全套笔记v0.3(1.8万字干货)

    Python的re模块提供了强大的正则表达式功能,可以方便地实现字符串的匹配、查找、替换和切割等操作。 文档中还提供了贪婪模式、非贪婪模式和独占模式的详细解释,包括回溯算法的工作机制。并且,文档中还提供了正则...

    正则表达式测试小工具

    正则表达式(Regular Expression,简称regex)是用于匹配字符串的一种模式,广泛应用于文本处理、数据验证、搜索和替换操作中。它通过一种简洁而强大的语法来定义一系列字符或字符模式,可以用来检测一个字符串是否...

    正则表达式经典实例

    2. **正则表达式在不同语言中的应用** - **Perl**: Perl语言的正则表达式功能强大,支持多种模式修饰符,如`i`忽略大小写,`g`全局匹配,`m`多行模式。 - **Java**: Java中的`Pattern`和`Matcher`类提供了正则...

    余晟_实战正则表达式

    正则表达式,简称为正则,是一种强大的文本处理工具,用于在字符串中进行模式匹配和搜索替换。在计算机编程中,它被广泛应用于数据验证、文本分析、数据提取等多个领域。"余晟_实战正则表达式"的课程很可能深入浅出...

    java基础之正则表达式

    正则表达式是Java编程语言中用于处理字符串的强大工具,它通过预定义的模式来匹配、查找、替换或分割字符串。在Java中,正则表达式主要使用`java.util.regex`包中的类,如`Pattern`和`Matcher`。 首先,正则表达式...

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

    Java正则表达式是编程语言Java中用于处理文本的强大工具,它可以用来匹配、替换、查找和分割字符串。在本文中,我们将深入探讨这些操作,并通过示例代码进行演示。 首先,我们来看匹配(matches)。`matches()` ...

    Python正则表达式笔记

    正则表达式是 Python 中的一种强大工具,用于匹配和处理字符串。下面是 Python 正则表达式笔记中的一些重要知识点: 1. 导入模块:在使用正则表达式之前,需要导入 re 模块。import re 2. 常用函数:re 模块提供了...

    正则表达式总结大全

    3. **替换**:使用`String.replaceAll()`方法来按正则表达式替换字符串中的内容。 - 示例:替换连续重复的字符为单一字符。 ```java public static void replaceString() { String str = "abcuuufl"; str = str...

    iOS正则表达式类库

    正则表达式类库为开发者提供了方便的接口,使得在Objective-C或Swift项目中处理字符串变得更加简单。本文将详细介绍iOS中常用的正则表达式类库以及如何使用它们。 RegexKitLite是其中一个知名的开源类库,版本4.0...

    正则表达式 调试工具

    正则表达式是一种强大的文本处理工具,用于匹配、查找、替换和分析字符串模式。它在编程、数据分析、网页抓取等领域广泛应用。标题提到的“正则表达式调试工具”是专为开发者设计的一款实用软件,它集成了调试、查找...

    java笔记之正则表达式

    在“java笔记之正则表达式”这篇笔记中,作者深入探讨了正则表达式的基本概念、操作方法以及在Java中的应用。 首先,正则表达式(Regular Expression)是一组符合特定规则的字符序列,主要用于字符串的查找、匹配、...

    徐葳《40小时掌握java语言之09网络编程+正则表达式》内部教材

    最后,徐葳探讨了正则表达式的替换功能,包括如何使用replaceFirst和replaceAll方法对字符串中符合正则表达式的部分进行替换。在讲解过程中,徐葳以具体的代码示例加深读者的理解,帮助读者更容易地掌握正则表达式的...

    正则表达式菜鸟教程.doc

    正则表达式(Regular Expression)是编程领域中用于处理文本的强大工具,它通过特定的模式匹配和搜索字符串,广泛应用于数据验证、文本提取、搜索替换等多个场景。正则表达式通常由普通字符(如字母、数字)和特殊字符...

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

    替换功能适用于文本内容的批量修改,而分组功能则在提取文本、重构字符串以及复杂匹配规则中发挥重要作用。学习和掌握这些技能对于进行文本处理和数据清洗等任务极为关键。 掌握好Java正则表达式的替换和分组功能,...

    Delphi 正则表达式 TPerlRegEx

    2. **替换操作**:你可以使用 TPerlRegEx 进行字符串替换,根据匹配的模式替换特定的子串,如将所有大写字母转换为小写,或者替换特定关键词。 3. **分割字符串**:通过正则表达式,可以将一个长字符串按照指定的...

Global site tag (gtag.js) - Google Analytics