匹配[JAVA_初级]:偶识【正则表达式】-编程开发技术.doc

java正则表达式  时间:2021-01-31  阅读:()

[JAVA-初级] :偶识【正则表达式】 -编程开发技术

[JAVA•初级] :偶识【正则表达式】

原文出处吴士龙

简介

正则表达式的“祖先”可以一直上溯至对人类神经系统如何工作的早期研究。 WarrenMcCulloch和Walter Pitts这两位神经生理学家研究出一种数学方式来描述这些神经网络。

1956年一位叫StephenKleene的美国数学家在McCulloch和Pitts早期工作的基础上发表了一篇标题为“神经网事件的表示法”的论文引入了正则表达式的概念。正则表达式就是用来描述他称为“正则集的代数”的表达式因此采用“正则表达式”这个术语。

随后发现可以将这一工作应用于使用Ken Thompson的计算搜索算法的一些早期研究Ken Thompson是Unix的主要发明人。正则表达式的第一个实用应用程序就是Unix中的qcd编辑器。

如他们所说剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文木的编辑器和搜索工具中的一个重要部分。止如他的名字一样是描述了一个规则通过这个规则可以匹配一类字符串。

如果原來没冇使用过正则表达式那么可能对这个术语和概念会不太熟悉。不过,它们并不是您想象的那么新奇。

请回想一下在硕盘上是如何查找文件的。大家肯定会使用和*字符来帮助查找正寻找的文件。 字符匹配文件名中的单个字符而*则匹配一个或多个字符。一个如Mata?.datJ的模式可以找到下述文件data 1. datdata2 ・ datdatax. datdataN. dat

如果使用*字符代替字符则将扩大找到的文件数量。 'data*, dat'可以匹配下述所有文件名

data. dat datal.datdata2. dat datal2. dat datax. dat dataXYZ ・ dat

尽管这种搜索文件的方法肯定很冇用但也十分冇限。 和*通配符的冇限能力可以使你对正则表达式能做什么冇一个概念文本的复杂处理不过正则表达式的功能更强大也更灵活。

优势

在典型的搜索和替换操作小必须提供要查找的确切文字。这种技术对于静态文本屮的简单搜索和替换任务可能足够了但是由于它缺乏灵活性因此在搜索动态文木时就有困难了甚至是不可能的。

使用正则表达式就可以

1 •测试字符串的某个模式。例如可以对一个输入字符串进行测试看在该字符吊是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证

2.替换文本。可以在文档屮使用一个止则表达式来标识特定文字然后可以全部将其删除或者替换为别的文字

3.根据模式匹配从字符串屮提取一个子字符串。可以用来在文本或输入字段小查找特定文字。

例如如果需要搜索整个web站点來删除某些过时的材料并替换某些IITML格式化标记则可以使用正则表达式对每个文件进行测试看在该文件屮是否存在所要查找的材料或HTML格式化标记。用这个方法就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料最后可以再次使用正则表达式來查找并替换那些需要替换的标记。

另一个说明正则表达式非常有用的示例是一种其字符串处理能力述不为人所知的语言。VBScript是Visual Basic的一个子集具有丰富的字符串处理功能。与C类似的Jscript则没有这一能力。止则表达式给JScript的字符串处理能力带来了明显改善。不过可能还是在VBScdpt中使用正则表达式的效率史高它允许在单个表达式中执行多个字符申操作。

一个止则表达式就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板将某个字符模式与所搜索的字符串进行匹配。

这里有一些可能会遇到的正则农达式示例:

位数字一个连字符以及一

卜 •表是元字符及其在止则表达式上下文中的行为的一个完整列表:

正则表达式文本 -source

只读布尔值•是否有修饰符g・global只读布尔值,是否有修饰符i - ignoreCase只读布尔值r是否有修饰符m-multi l ine下一次检索开始的位适 用于exec()和test 。 - lastindex

类似Stringmatch,全局匹配无效匹配同时修改lastindex值为紧挨着匹配子串的字符位置 exec

匹配第n个匹配正则表达式中的圆括号子表达式文本 -Sn

返回布尔值・可以使用lastindex属性-test

返回由匹配结果组成的数组 match

Demo

JAVA程序中使用止则表达式

相关类位于 java. util, regex包下面

类Pattern 

正则表达式的编译表示形式。

Patternp = Pattern, compile(r, int) ;? //建立正则表达式,并启用相应模式类Matcher 

通过解释Pattern对charactersequence执行匹配操作的引擎

Matcherm二p. matcher (str) ; //匹配str字符串

编程中使用止则表达式常见情况

验证表达式是否匹配整个字符串

验证表达式是否可以匹配字符串的子字符串

返回给定字符串屮匹配给定正则表达式所有子字符串

替换给定字符串中匹配正则表达式的子字符串

根据止则表达式定义规则截取字符吊

<span style二"font-size: 18px;">package test;import java.util. ArrayList;import java. util. List;import java, uti1. regex. Matcher;import java.util, regex .Pattern;public class TestReg {

/**

*验证传入的字符吊是否整个匹配止表达式

* @param regex:正则表达式

* ©param decStr 要匹配的字符串

* @return :若匹配,则返冋true;否则,返冋false;

*/publicstatic boolcan v31id3tc(String regex, String decStr)

//表达式对象

Patternp =

Pattern, compile(regex, Pattern. CASE INSENSITIVE) ;

//创建Matcher对象

Matcherm二p. matcher(decStr) ;

//是否完全匹配booleanyesorno = m. matches () ; //该方法尝试将整个

输入序列与该模式匹配returnyesorno;

/**

*验证传入的字符串是否有子字符串匹配正表达式

* @param regex:正则表达式

* ©param decStr 要匹配的字符串

* @rcturn :若匹配则返回true;否则返回false;

*/publicstatic boolean validate2(String regex, String decStr) { 〃表达式对象

Patternp二Pattern, compi1e(regex,

Pattern. CASE_INSENSITIVE) ;

//创建Matcher对彖Matcherm = p. matcher(decStr) ;//是否完全匹配booleanyesorno二m. find() ; //该方法扫描输入序列以

杳找与该模式匹配的下一个了序列。returnyesorno;

/**

*给定字符串中是否有符合给定止则表达式的了字符串返回匹配的第一个子字符串

* @param regex 正则表达式

* @param decStr 要匹配的字符串

* @return :返回匹配的第一个字符串若不匹配则null

*/ publicstatic String search (String regex, String decStr) {Patternp = Pattern, compile(regex,

Pattern.CASE_INSENSITIVE) ;

Matcherm二p.matcher(decStr) ;

//是否找到匹配booleanfound = m. find() ; //该方法扫描输入序列以查找与该模式匹配的下一个子序列。

String foundstring二〃 “ 

云俄罗斯VPSJusthost俄罗斯VPS云服务器justg:JustHost、RuVDS、JustG等俄罗斯vps主机

俄罗斯vps云服务器商家推荐!俄罗斯VPS,也叫毛子主机(毛子vps),因为俄罗斯离中国大陆比较近,所以俄罗斯VPS的延迟会比较低,国内用户也不少,例如新西伯利亚机房和莫斯科机房都是比较热门的俄罗斯机房。这里为大家整理推荐一些好用的俄罗斯VPS云服务器,这里主要推荐这三家:justhost、ruvds、justg等俄罗斯vps主机,方便大家对比购买适合自己的俄罗斯VPS。一、俄罗斯VPS介绍俄罗斯...

酷番云-618云上秒杀,香港1核2M 29/月,高防服务器20M 147/月 50M 450/月,续费同价!

官方网站:点击访问酷番云官网活动方案:优惠方案一(限时秒杀专场)有需要海外的可以看看,比较划算29月,建议年付划算,月付续费不同价,这个专区。国内节点可以看看,性能高IO为主, 比较少见。平常一般就100IO 左右。优惠方案二(高防专场)高防专区主要以高防为主,节点有宿迁,绍兴,成都,宁波等,节点挺多,都支持防火墙自助控制。续费同价以下专场。 优惠方案三(精选物理机)西南地区节点比较划算,赠送5...

优林云(53元)哈尔滨电信2核2G

优林怎么样?优林好不好?优林 是一家国人VPS主机商,成立于2016年,主营国内外服务器产品。云服务器基于hyper-v和kvm虚拟架构,国内速度还不错。今天优林给我们带来促销的是国内东北地区哈尔滨云服务器!全部是独享带宽!首月5折 续费5折续费!地区CPU内存硬盘带宽价格购买哈尔滨电信2核2G50G1M53元直达链接哈尔滨电信4核4G50G1M83元直达链接哈尔滨电信8核8G50G1M131元直...

java正则表达式为你推荐
软银收购arm就只买苹果手机是崇洋媚外吗三国游戏哪个好玩哪款三国游戏最好玩`!加速器哪个好加速器哪个好用?播放器哪个好安卓手机视频播放器哪个好点清理手机垃圾软件哪个好清理手机垃圾文件的软件哪个好?51空间登录以前的51空间怎么进?qq空间登录器QQ空间校友网页自动登陆器qq空间登录不了为什么我的QQ登陆不了QQ空间考生个人空间登录我是2007年入的学2010年毕业我想查询这3年的成绩,怎么办啊?求解答!考生个人空间登录第一次登陆湖南省高等教育自学考试 考生个人空间就密码不对为什么
日本私人vps 老域名全部失效请记好新域名 踢楼 私人服务器 softbank官网 新站长网 100m空间 免费防火墙 卡巴斯基试用版 可外链相册 服务器合租 空间合租 hdd ca187 免费蓝钻 镇江高防 广东服务器托管 什么是dns alexa搜 ddos攻击软件 更多