Java中的正则表达式应用探讨

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:lwlw02
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着信息技术的高速发展,计算机面临着大量的数据处理业务。文本字符串处理是一种经常性的业务,正则表达式在复杂字符串处理方面有着得天独厚的优势。文章介绍了Java语言中的正则表达式处理方法,分析了复杂字符串的分割、查找、替换和提取特殊子串的方法,总结了构建正则表达式重要性。
  关键词:文本;字符串;正则表达式;模式;Java
  中图分类号:TP312 文献标识码:A
  文章编号:1009-3044(2019)32-0095-04
  1背景
  处理文本和数据是计算机经常要做的事情,诸如存储在数据库的数据、文本编辑处理、网上注册、填报登记的信息、网站新闻列表等应用上都涉及大量处理文本和数据的操作。有时可能不知道需要处理的大量文本数据的具体内容,但是若把这些文本和数据以一种能让计算机识别和处理的模式表现出来,再让计算机分析和处理文本和数据就变得方便了,这就是正则表达式技术的运用,正则表达式的运用给计算机处理大量文本数据带来快速和简便的操作。
  2正则表达式元字符
  正则表达式(Regular Expressionl是由一些字符和特殊字符组成的字符串,这个字符串描述了字符和字符的重复排列方式,反映了字符重复排列的规律性,因此能够按某种模式匹配一些有相似特征的字符串或字符串集合。运用正则表达式首先要理解正则表达式的元字符集提供的字符和特殊字符的含义。
  2.1正则表达式支持的字符
  正则表达式支持的合法字符如表1所示。
  表1所列的是可以在正则表达式中使用的常规字符,利用常规字符也可以定义正则表达式,如”abc\nabc”匹配”abc\nabc”,字符串自身匹配自身。Java语言中,java.util.regex包下有两个重要的类:Pattern和Matcher,这两个类提供了定义正则表达式和匹配目标字符串的主要操作。实际工作中,要用到Pattern中的matches方法,判断某个正则表达式与目标字符串是否匹配。matches方法是Pattern类的一个类方法,方法的返回值是boolean型数据,该方法需要两个参数,第一个参数是定义的正则表达式,即某种形式的模式,第二个参数是要匹配的目标字符串,当某个正则表达式与目标字符串匹配成功,方法返回true值,否则返回false,通常用matches方法测试定义的正则表达式能否匹配目标字符串。
  要构造灵活的正则表达式就要用到正则表达式的特殊字符、预定义字符、边界匹配符和方括号、圆括号表达式。
  2.2正则表达式的特殊字符
  正则表达式的特殊字符如表2所示。
  2.5圆括号表达式
  当把多个字符当作一个独立单元进行处理时,就要用到圆括号表达式了,即用圆括号把多个字符分成一个子组,结合管道运算符可以可以构造关键词匹配正则表达式。
  “((public)I(protected)I(private))”用于匹配Java的三个访问控制符之一。
  在正则表达式中用一对圆括号可以把正则表达式分组,每一个子组能够保留下来做进一步的处理。假定要匹配的目标字符串中既含有英文字符又含有数字字符,可以使用正则表达式”(\\w )-(\\d )”来匹配,在Java中把目标字符串分成两个子组,并且两个子组匹配结果在Matcher类中以子组的形式保留下来,非常方便地进行下一步处理。而传统的做法需要编写两段程序代码,先从目标字符串中分离处英文字符并保存下来,再从目标字符串中分离出数字字符,做进一步处理,处理过程比使用圆括号运算符复杂得多。
  2.6数量标识符支持的模式
  特殊符号*、?、 用于匹配字符串模式出现一次、多次或未出現的情况,又称作闭包运算符或量词。*(星号)运算符匹配它左边那个正则表达式出现0次或0次以上的情况。 (加号)运算符匹配它左边那个正则表达式出现1次或多次的情况。?f问号)运算符匹配它左边那个正则表达式出现0次或1次的情况。
  花括号{}运算符也是用来匹配其左边正则表达式出现的情况,花括号内可以是一个值、一个值跟一个逗号或由逗号分隔的两个值。fml表示匹配其左边那个正则表达式m次出现,{m,}表示匹配其左边那个正则表达式至少出现m次;{m,n}表示匹配其左边那个正则表达式至少出现m次,最多出现n次。
  构建正则表达式时使用了表示重复的元字符(*、 、?、{m,n})说明了正则表达式引擎在执行模式匹配时的工作模式。Java语言中支持三种工作模式,第一贪婪模式(Greedv),重复元字符默认工作模式,贪婪模式的表达式会一直匹配下去,直到无法匹配为止。第二非贪婪模式(Reluctant)又称勉强模式,用问号后缀(?)表示,它只匹配最少的字符,也称为最小匹配模式。第三占有模式(Possessive),用加号后缀( )表示,目前只有Java语言支持该模式,通常比较少用。
  上面第一行使用贪婪模式匹配第一个出现的单词,输出结果x替换掉Hello,第二行使用非贪婪模式匹配,即匹配最少的字符,Hello,Java前的第0个字符替换成x。
  3正则表达式的应用
  正则表达式是一个强大的字符串处理工具,互联网上的网页文件其实质是一个庞大的字符串文件,利用正则表达式可以对字符串进行查找、提取、分割和替换等操作。
  3.1Pattern和Marcher类
  Pattern类和Matcher类位于iava.util.regex包内,两者都是终极类,一旦在程序中定义了正则表达式,就可以用这两个类的对象来使用正则表达式。Pattern对象用来保存编译后的正则表达式,编译后的正则表达式可以在程序中反复使用,提高程序执行的效率,利用Pattern对象创建Matcher对象,执行模式匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可以共享同一个Pattern对象。典型的调用顺序如下:
  从字符串中提取特定子字符串,操作方法基本相同,只是所定义的正则表达式内容不同。
  4结束语
  正则表达式在大量文本字符处理上有着得天独厚的技术优势,传统的文本处理技术算法不仅复杂而且代码臃肿,执行效率也低。信息技术的高速发展促进处理大量文本数据的正则表达式技术的发展,很多计算机高级语言演化也是从不支持正则表达式技术转化为支持正则表达式技术,并且不断优化正则表达式技术,Java语言就是这样的一种语言,Java语言从1.4版以来就支持正则表达式技术,在目前见到的Java语言的各个版本中,都有着优化和改进正则表达式功能的说明。正则表达式的关键是构建一个正则表达式模式,该模式能反映出文本字符串的排列特征,从而用该模式代表符合特征的大量具体的文本字符串,为进一步的处理提供便捷。
其他文献
摘要:社会网络影响力最大化是社会网络分析领域的一个重要研究问题,该问题旨在寻找出社会网络中具有最大影响力的节点集合。从社会网络影响力最大化问题产生背景出发,介绍影响力最大化问题的求解过程与求解过程中用到的基础模型,归纳总结了现有的几种主要传播模型、影响力最大化算法及研究现状。最后,讨论了该研究存在的问题和对未来的展望。  关键词:社会网络;传播模型;影响力最大化算法  中图分类号:TP393 文献
伴随着国家信息化进程的不断加快,信息技术对我国人民日常生活的影响也越来越大。大学作为国家培养人才的重要地点,自然也要跟紧信息化的步伐。如今,越来越多的高校加入了校园一卡通的行列,校园一卡通已经成了我国大部分高校学生日常生活中不可缺少的一部分。伴随着校园一卡通在高校的不断普及,其可能存在的安全性问题也越来越受关注。本文将从校园一卡通的所要实现的目标及其整体结构总结和讨论校园一卡通的好处及其可能存在的
摘要:高校智慧校园是在数字信息化校园基础上,所建构的智能化网络服务评价架构,其主要用到大数据、云计算及物联网技术。当前大数据及云计算技术,在智慧校园体系建设中的应用,通常会利用Hadoop分布式平台、HDFS文件系统、Ma-pReduce虚拟计算等大数据技术,以及云计算平台及其服务器,来完成高校信息管理系统的部署与建设,并实现对数据资源的挖掘、整合处理与存储,以满足不同学校成员的教学、科研、管理决
摘要:当前,在线测评系统得到广泛应用,选题策略成为发挥系统效能的关键,传统的选题策略存在检验精度不够、试题曝光不均衡,题库安全性差等不足,论文提出一种新的自适应选题策略,先对题库进行基于难度的分区,区内再按区分度二次分层,建立相应选择量模型,通过反馈机制,选出信息量最大的试题。实验表明新策略在保证检测效能的前提下有效地降低了试卷重复率,保证了题库的安全性。  关键词:自适应策略;信息量;随机抽样法
摘要:随着信息技术的发展,高校教学的信息化水平也逐渐提升,这不仅丰富了课堂教学量,同时也改变了传统的教学模式,推动了高校教学的发展。当前,部分高校的教学信息化水平还比较低,难以满足教学的实际需求,因此应加快网络辅助教学平台建设,为教学提供强力的支撑,推动教学水平的提升。  关键词:网络辅助教学平台;建设;实践  中图分类号:TP311 文献标识码:A  文章编号:1009-3044(2019)32
摘要:使用SQL Server进行数据挖掘时,透彻理解相关技术及产品的使用特点、工作机制对提升挖掘效果具有重要意义。遵循CRISP-DM标准数据挖掘流程,以UCI数据集Adult分类任务为案例,研究了在MicrosoftBI技术框架下实现SQL Serv-er数据挖掘的基本过程、方法和特点,探索了重要图表工具的工作机制。实验表明SQLServer数据挖掘技术易于使用、性能良好,并能和SSIS等很好
摘要:高校排课中待解决的主要问题就是合理的安排教师、教室、时间、班级等教学资源。大多数遗传算法对排课的应用考虑的是节次优先等问题,而对排课中的教学资源冲突采用消除的办法解决。针对排课中的冲突,该文以班级、时间、教室为三维坐标空间,以排课中存在的冲突数为适应度函数,采用平面交叉的方式,通过精英保留策略构造遗传种群进行选择进化。  关键词:遗传算法;三维编码;冲突函数;平面交叉;精英保留  中图分类号
摘要:在“互联网 ”时代下,信息技术在教育教学工作中得到了较为广泛的应用,在很大程度上促进了我国教育事业的发展和进步。但是也应该看到,信息技术在带来巨大便利的同时,也给教育工作带来了一定的负面影响。因而高校各级部门应该加强对于学生在网络安全教育方面的工作力度,发挥信息技术的长处,尽量减小网络安全问题对当代大学生的危害,达到培养高素质人才的目的。  关键词:互联网 ;网络安全;教育  中图分类号:T
随着网络的发展衍生出了数以万计的软件,同时也有一些软件以其拥有强大的功能和卓越的实用性慢慢深入人们的生活。其中一些有着特殊用途的软件慢慢被高校用于管理和激励学生
摘要:随着银行业对金融科技的重视程度不断增加,相应资金投入也越来越大,网络规模和复杂程度也较以往出现较大的增长,这对网络运维人员提出极大挑战,目前网络故障排查没有统一的办法,主要依靠个人的经验来判断,该文提出一种“立足源点,同类比较,精准定位”的网络故障排查方法,可以帮助网络管理员第一时间分析、排查、定位故障原因,解决网络故障,提升银行业网络故障应急处置能力。  关键词:网络故障排查;立足源点;同