因胸联盟 发表于 2015-1-18 11:43:37

JAVA教程之Java正则表达式详解(上)

进而能拉拢大多数程序员用windows产品。并且从ASP.NETAJAX可以跨平台这一点上,间接证明了我们的推断,至少证明了微软做过这方面的研究。所以如果哪一天突然听说了.net可以跨平台了,那么请不要吃惊,如果这一天真的到来,java就到了真正和.net决战的时刻。因为不到万不得以的时候微软是不会推出跨平台的.net的,如果跨平台的.net还不足以对抗java的话,那么微软还剩的手段就是开源了,呵呵。详解|正则假如你已经用过Perl或任何其他内建正则表达式撑持的言语,你必定晓得用正则表达式处置文本和婚配形式是何等复杂。假如你不熟习这个术语,那末“正则表达式”(RegularExpression)就是一个字符组成的串,它界说了一个用来搜刮婚配字符串的形式。很多言语,包含Perl、PHP、Python、JavaScript和JScript,都撑持用正则表达式处置文本,一些文本编纂器用正则表达式完成初级“搜刮-交换”功效。那末Java又如何呢?本文写作时,一个包括了用正则表达式举行文本处置的Java标准需求(SpecificationRequest)已失掉承认,你能够等候在JDK的下一版本中看到它。但是,假如如今就必要利用正则表达式,又该怎样办呢?你能够从Apache.org下载源代码开放的Jakarta-ORO库。本文接上去的内容先扼要地先容正则表达式的进门常识,然后以Jakarta-OROAPI为例先容怎样利用正则表达式。1、正则表达式基本常识我们先从复杂的入手下手。假定你要搜刮一个包括字符“cat”的字符串,搜刮用的正则表达式就是“cat”。假如搜刮对巨细写不敏感,单词“catalog”、“Catherine”、“sophisticated”都能够婚配。也就是说:
<br>1.1句点标记假定你在玩英文拼字游戏,想要找出三个字母的单词,并且这些单词必需以“t”字母开首,以“n”字母停止。别的,假定有一本英笔墨典,你能够用正则表达式搜刮它的全体内容。要机关出这个正则表达式,你可使用一个通配符――句点标记“.”。如许,完全的表达式就是“t.n”,它婚配“tan”、“ten”、“tin”和“ton”,还婚配“t#n”、“tpn”乃至“tn”,另有其他很多偶然义的组合。这是由于句点标记婚配一切字符,包含空格、Tab字符乃至换行符:
<br>1.2方括号标记为懂得决句点标记婚配局限过于普遍这一成绩,你能够在方括号(“[]”)内里指定看来成心义的字符。此时,只要方括号内里指定的字符才介入婚配。也就是说,正则表达式“tn”只婚配“tan”、“Ten”、“tin”和“ton”。但“Toon”不婚配,由于在方括号以内你只能婚配单个字符:
<br>1.3“或”标记假如除下面婚配的一切单词以外,你还想要婚配“toon”,那末,你可使用“|”操纵符。“|”操纵符的基础意义就是“或”运算。要婚配“toon”,利用“t(a|e|i|o|oo)n”正则表达式。这里不克不及利用方扩号,由于方括号只同意婚配单个字符;这里必需利用圆括号“()”。圆括号还能够用来分组,详细请拜见前面先容。
<br>1.4暗示婚配次数的标记表一显现了暗示婚配次数的标记,这些标记用来断定紧靠该标记右边的标记呈现的次数:

<br>假定我们要在文本文件中搜刮美国的社会平安号码。这个号码的格局是999-99-9999。用来婚配它的正则表达式如图一所示。在正则表达式中,连字符(“-”)有着特别的意义,它暗示一个局限,好比从0到9。因而,婚配社会平安号码中的连字标记时,它的后面要加上一个本义字符“”。

<br>
图一:婚配一切123-12-1234情势的社会平安号码假定举行搜刮的时分,你但愿连字标记能够呈现,也能够不呈现――即,999-99-9999和999999999都属于准确的格局。这时候,你能够在连字标记前面加上“?”数目限制标记,如图二所示:

<br>
图二:婚配一切123-12-1234和123121234情势的社会平安号码上面我们再来看别的一个例子。美国汽车派司的一种格局是四个数字加上二个字母。它的正则表达式后面是数字部分“{4}”,再加上字母部分“{2}”。图三显现了完全的正则表达式。

<br>
图三:婚配典范的美国汽车派司号码,如8836KV1.5“否”标记“^”标记称为“否”标记。假如用在方括号内,“^”暗示不想要婚配的字符。比方,图四的正则表达式婚配一切单词,但以“X”字母开首的单词除外。

<br>
图四:婚配一切单词,但“X”开首的除外1.6圆括号和空缺标记假定要从格局为“June26,1951”的诞辰日期中提掏出月份部分,用来婚配该日期的正则表达式能够如图五所示:

<br>
图五:婚配一切MothDD,YYYY格局的日期新呈现的“s”标记是空缺标记,婚配一切的空缺字符,包含Tab字符。假如字符串准确婚配,接上去怎样提掏出月份部分呢?只需在月份四周加上一个圆括号创立一个组,然后用OROAPI(本文前面具体会商)提掏出它的值。修正后的正则表达式如图六所示:

<br>
图六:婚配一切MonthDD,YYYY格局的日期,界说月份值为第一个组1.7别的标记为烦琐起见,你可使用一些为罕见正则表达式创立的快速标记。如表二所示:表二:经常使用标记

<br>比方,在后面社会平安号码的例子中,一切呈现“”的中央我们都可使用“d”。修正后的正则表达式如图七所示:

<br>
图七:婚配一切123-12-1234格局的社会平安号码2、Jakarta-ORO库有很多源代码开放的正则表达式库可供Java程序员利用,并且它们中的很多撑持Perl5兼容的正则表达式语法。我在这里选用的是Jakarta-ORO正则表达式库,它是最周全的正则表达式API之一,并且它与Perl5正则表达式完整兼容。别的,它也是优化得最好的API之一。Jakarta-ORO库之前叫做OROMatcher,DanielSavarese小气地把它赠予给了JakartaProject。你能够依照本文最初参考资本的申明下载它。我起首将扼要先容利用Jakarta-ORO库时你必需创立和会见的对象,然后先容怎样利用Jakarta-OROAPI。▲PatternCompiler对象起首,创立一个Perl5Compiler类的实例,并把它赋值给PatternCompiler接口对象。Perl5Compiler是PatternCompiler接口的一个完成,同意你把正则表达式编译成用来婚配的Pattern对象。
为什么外国人还要写那些框架进行代码封装,他们不就是为了别人使用时可以更简单么!如果要达到一个企业级项目的不用框架是很难的。小一些的项目还行,大的光是MVC模式的设计的编码量就够大的了。还有性能方面,单轮windows,这个工具是微软写的,。

飘灵儿 发表于 2015-1-21 13:23:43

应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展

透明 发表于 2015-1-23 12:48:20

Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。

变相怪杰 发表于 2015-1-31 15:55:46

如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。

乐观 发表于 2015-2-6 20:27:30

当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?

分手快乐 发表于 2015-2-18 13:43:00

Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站

仓酷云 发表于 2015-2-20 12:29:51

一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从

简单生活 发表于 2015-3-6 17:04:27

是一种将安全性(Security)列为第一优先考虑的语言

深爱那片海 发表于 2015-3-6 17:58:49

你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。

不帅 发表于 2015-3-13 04:45:59

其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。

再见西城 发表于 2015-3-17 11:08:22

《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。

因胸联盟 发表于 2015-3-17 11:25:18

是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言

老尸 发表于 2015-3-17 18:10:56

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。

蒙在股里 发表于 2015-3-18 02:20:01

是一种使网页(Web Page)产生生动活泼画面的语言

精灵巫婆 发表于 2015-3-19 04:27:06

是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能

莫相离 发表于 2015-3-25 13:01:52

有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)

海妖 发表于 2015-4-4 17:32:08

Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台

活着的死人 发表于 2015-4-10 19:54:36

象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。

谁可相欹 发表于 2015-4-11 16:59:10

http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。

灵魂腐蚀 发表于 2015-4-16 19:10:10

Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
页: [1]
查看完整版本: JAVA教程之Java正则表达式详解(上)