`

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

阅读更多

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

元字符:

        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
分享到:
评论

相关推荐

    #这是一篇关于 LabVIEW 介绍说明、使用技巧和优缺点对文章

    labview

    重庆大学数字电子技术试题.pdf

    重庆大学期末考试试卷,重大期末考试试题,试题及答案

    重庆大学2012电磁场考题(A)参考答案及评分标准.pdf

    重庆大学期末考试试卷,重大期末考试试题,试题及答案

    5G智慧港口解决方案.pptx

    在现有省、市港口信息化系统进行有效整合基础上,借鉴新 一代的感知-传输-应用技术体系,实现对码头、船舶、货物、重 大危险源、危险货物装卸过程、航管航运等管理要素的全面感知、 有效传输和按需定制服务,为行政管理人员和相关单位及人员提 供高效的管理辅助,并为公众提供便捷、实时的水运信息服务。 建立信息整合、交换和共享机制,建立健全信息化管理支撑 体系,以及相关标准规范和安全保障体系;按照“绿色循环低碳” 交通的要求,搭建高效、弹性、高可扩展性的基于虚拟技术的信 息基础设施,支撑信息平台低成本运行,实现电子政务建设和服务模式的转变。 实现以感知港口、感知船舶、感知货物为手段,以港航智能 分析、科学决策、高效服务为目的和核心理念,构建“智慧港口”的发展体系。 结合“智慧港口”相关业务工作特点及信息化现状的实际情况,本项目具体建设目标为: 一张图(即GIS 地理信息服务平台) 在建设岸线、港口、港区、码头、泊位等港口主要基础资源图层上,建设GIS 地理信息服务平台,在此基础上依次接入和叠加规划建设、经营、安全、航管等相关业务应用专题数据,并叠 加动态数据,如 AIS/GPS/移动平台数据,逐步建成航运管理处 "一张图"。系统支持扩展框架,方便未来更多应用资源的逐步整合。 现场执法监管系统 基于港口(航管)执法基地建设规划,依托统一的执法区域 管理和数字化监控平台,通过加强对辖区内的监控,结合移动平 台,形成完整的多维路径和信息追踪,真正做到问题能发现、事态能控制、突发问题能解决。 运行监测和辅助决策系统 对区域港口与航运业务日常所需填报及监测的数据经过科 学归纳及分析,采用统一平台,消除重复的填报数据,进行企业 输入和自动录入,并进行系统智能判断,避免填入错误的数据, 输入的数据经过智能组合,自动生成各业务部门所需的数据报 表,包括字段、格式,都可以根据需要进行定制,同时满足扩展 性需要,当有新的业务监测数据表需要产生时,系统将分析新的 需求,将所需字段融合进入日常监测和决策辅助平台的统一平台中,并生成新的所需业务数据监测及决策表。 综合指挥调度系统 建设以港航应急指挥中心为枢纽,以各级管理部门和经营港 口企业为节点,快速调度、信息共享的通信网络,满足应急处置中所需要的信息采集、指挥调度和过程监控等通信保障任务。 设计思路 根据项目的建设目标和“智慧港口”信息化平台的总体框架、 设计思路、建设内容及保障措施,围绕业务协同、信息共享,充 分考虑各航运(港政)管理处内部管理的需求,平台采用“全面 整合、重点补充、突出共享、逐步完善”策略,加强重点区域或 运输通道交通基础设施、运载装备、运行环境的监测监控,完善 运行协调、应急处置通信手段,促进跨区域、跨部门信息共享和业务协同。 以“统筹协调、综合监管”为目标,以提供综合、动态、实 时、准确、实用的安全畅通和应急数据共享为核心,围绕“保畅通、抓安全、促应急"等实际需求来建设智慧港口信息化平台。 系统充分整合和利用航运管理处现有相关信息资源,以地理 信息技术、网络视频技术、互联网技术、移动通信技术、云计算 技术为支撑,结合航运管理处专网与行业数据交换平台,构建航 运管理处与各部门之间智慧、畅通、安全、高效、绿色低碳的智 慧港口信息化平台。 系统充分考虑航运管理处安全法规及安全职责今后的变化 与发展趋势,应用目前主流的、成熟的应用技术,内联外引,优势互补,使系统建设具备良好的开放性、扩展性、可维护性。

    机械工程学位 Matlab.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    Matlab菌丝检测识别项目.zip

    提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

    基于django-xadmin的idc资产管理应用.zip

    基于django-xadmin的idc资产管理应用.zip

    电商数据分析.py

    电商数据分析.py

    头哥机组练习-第4关:16位快速加法器设计(计算机组成原理-谭志虎-华科大)

    头哥机组练习-第4关:16位快速加法器设计(计算机组成原理-谭志虎-华科大)

    Python实现春节烟花模拟介绍及代码示例.docx

    春节,作为中国最重要的传统节日之一,象征着团圆、喜庆和新的开始。烟花作为春节庆祝活动的重要元素,以其绚烂多彩、瞬间绽放的特点,给人们带来了无尽的欢乐和惊喜。然而,由于环境保护和安全的考虑,现实中烟花的燃放受到了诸多限制。因此,利用编程技术,模拟出春节烟花的效果,成为了一种新颖而有趣的方式。 本文将介绍一种基于Python编程语言的春节烟花模拟代码。通过简单的代码实现,我们可以创建出各种形态、颜色和动态效果的烟花,让人们在计算机屏幕上欣赏到一场别样的“烟花盛宴”。 一、代码介绍 该代码主要使用了Python的图形库pygame,以及random库来生成随机颜色和位置。pygame库是一个用于编写视频游戏的Python模块集,它可以创建窗口、绘制图形、处理键盘和鼠标事件等。random库则用于生成随机数,以模拟烟花的随机性和不确定性。 在代码中,我们定义了一个烟花类(Firework),包含烟花的初始位置、颜色、速度等属性,以及一个方法(update)用于更新烟花的位置和状态。然后,在主程序中,我们创建了一定数量的烟花对象,并在每一帧中更新它们的状态,同时在屏幕上绘制出来。 通过调整烟花类

    财务数据分析看版.xlsx

    Excel数据看板,Excel办公模板,Excel模板下载,Excel数据统计,数据展示

    social ski driver algorithm社会滑雪优化算法附matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    辐射状系统配电网中的潮流解matlab代码.zip

    1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    LabVIEW的概要分析与介绍

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司(National Instruments)开发的图形化编程语言和开发环境,广泛应用于数据采集、控制系统、测试测量、科学研究等领域。以下是关于 LabVIEW 的资源描述: 开发环境和工具:LabVIEW 提供了一个直观易用的开发环境,允许用户通过拖放式的方式创建虚拟仪器(Virtual Instruments,简称VIs)并连接它们,构建复杂的控制和测量系统。LabVIEW 还提供了丰富的图形化编程工具和函数库,包括数据处理、信号分析、仪器控制等功能,极大地简化了开发过程。 图形化编程语言:LabVIEW 使用图形化编程语言 G(Graphical Programming Language)进行编程,采用了数据流编程模型,使得程序的逻辑结构更直观清晰。用户可以通过连接各种图形化的函数块(Node)来实现数据处理、控制逻辑等功能,无需编写复杂的代码,降低了学习和开发的门槛。 应用领域:LabVIEW 在科学研究、工程控制、教育培训等领域有着

    单片机实验或课设-定时器控制交通指示灯

    定时器控制交通指示灯 用C语言编写,也可以改成汇编

    城区智慧城市感知建设项目-设计方案(306页WORD).docx

    共建共享共治智慧城市感知系统,实现视频资源的集约化;视频感知,AI加持,构建视频AI资源池;融合感知数据与业务数据;实现城市状态的实时监测、城市异常的智能预警以及对事件的主动学习、预警和决策模型的自动训练,以数据和知识驱动实现城市日常治理、公共服务、应急处置和发展筹划等业务的可视化、智能化、可量化评估与持续优化,推动城市治理体系和治理能力现代化;从而有效支撑综合类业务及探索运营类业务。 在现有建设的基础上,补全前端多维信息感知设备包括路口交通感知、规范交通标示、人脸抓拍、信号控制等系统,为政府综合业务、承载城市运行管理、应急指挥、民生服务等业务,重点在运行监测、协同指挥、仿真决策、开放服务等方面,通过全面感知城市运行状态,实现城市日常运行管理以及突发事件应急联动指挥等全景指挥中心功能。

    阿里巴巴笔试题目.docx

    校园招聘笔试题目及答案

    人力资源数据看版.xlsx

    Excel数据看板,Excel办公模板,Excel模板下载,Excel数据统计,数据展示

    Google Play商店.apk

    Google Play商店.apk

    杭州电子工业学院数据结构学生考试卷( 样 )杭州电子科技大学期末考试.pdf

    杭州电子科技大学,期末考试资料,计算机专业期末考试试卷,试卷及答案,数据结构。

Global site tag (gtag.js) - Google Analytics