Java正则表达式.pdf

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java正则表达式.pdf

在 Sun 的Java JDK 1.40 版本中,Java 自带了支持正则表达式的包,本文就 抛砖引玉地介绍了如何使用 java.util.regex 包。 可粗略估计一下,除了偶尔用 Linux 的外,其他Linu x 用户都会遇到正则 表达式。正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式- 替换方面富有弹性。在 Unix 世界里,正则表达式几乎没有什么限制,可肯定的 是,它应用非常之广泛。 正则表达式的引擎已被许多普通的 Unix 工具所实现,包括 grep,awk,vi 和 Emacs 等。此外,许多使用比较广泛的脚本语言也支持正则表达式,比如 Python, Tcl,JavaScript,以及最著名的Perl。 我很早以前就是个 Perl 方面的黑客,如果你和我一样话,你也会非常依赖 你手边的这些强大的 text-munging 工具。近几年来,像其他程序开发者一样, 我也越来越关注 Java 的开发。 Java 作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自 带对正则表达式的支持。直到最近,借助于第三方的类库,Java 开始支 持正则 表达式,但这些第三方的类库都不一致、兼容性差,而且维护代码起来很糟糕。 这个缺点,对我选择 Java 作为首要的开发工具来说,一直是个巨大的顾虑 之处。 你可以想象,当我知道 Sun 的Java JDK 1.40 版本包含了 java.util.regex(一个完全开放、自带的正则表达式包)时,是多么的高兴!很搞 笑的说,我花好些时间去挖掘这个被隐藏起 来的宝石。我非常惊奇的是,Java 这样的一个很大改进 (自带了java.util.regex 包)为什么不多公开一点呢?! 最近,Java 双脚都跳进了正则表达式的世界。java.util.regex 包在支持正 则表达也有它的过人之处,另外 Java 也提供详细的相 关说明文档。使得朦朦胧 胧的 regex 神秘景象也慢慢被拨开。有一些正则表达式的构成 (可能最显著的是, 在于糅合了字符类库)在 Perl 都找不到。 在 regex 包中,包括了两个类,Pattern(模式类)和 Matcher(匹配器类)。 Pattern 类是用来表达和陈述所要搜索模式的对 象,Matcher 类是真正影响搜索 的对象。另加一个新的例外类,PatternSyntaxException,当遇到不合法的搜索 模式时,会抛出例 外。 即使对正则表达式很熟悉,你会发现,通过 java 使用正则表达式也相当简 单。要说明的一点是,对那些被Perl 的单行匹配所宠坏的Perl狂热爱好者来说, 在使用 java 的regex 包进行替换操作时,会比他们所以前常用的方法费事些。 本文的局限之处,它不是一篇正则表达式用法的完全教程。如果读者要对正 则表达进一步了解的话,推荐阅读 Jeffrey Frieldl 的Mastering Regular Expressions,该书由 O’Reilly 出版社出版。我下面就举一些例子来教读者如 何使用正则表达式,以及如何更简单地去使用它。 设计一个简单的表达式来匹配任何电话号码数字可能是比较复杂的事情,原 因在于电话号码格式有很多种情况。所有必须选择一个比较有效的模式。比 如:(212) 555-1212, 212-555-1212 和 212 555 1212,某些人会认为它们都是 等价的。 首先让我们构成一个正则表达式。为简单起见,先构成一个正则表达式来识 别下面格式的电话号码数字:(nnn)nnn-nnnn。 第一步,创建一个 pattern 对象来匹配上面的子字符串。一旦程序运行后, 如果需要的话,可以让这个对象一般化。匹配上面格式的正则表达可以 这样构 成:(/d{3})/s/d{3}-/d{4},其中/d 单字符类型用来匹配从 0 到 9 的任何数字, 另外{3}重复符号,是个简便的记号,用来表示有 3 个连续的数字位,也等效于 (/d/d/d)。/s 也另外一个比较有用的单字符类型,用来匹配空格,比如 Space 键,tab 键和换行符。 是不是很简单?但是,如果把这个正则表达式的模式用在 java 程序中,还要 做两件事。对 java 的解释器来说,在反斜线字符(/)前的字符有特 殊的含义。 在 java 中,与regex 有关的包,并不都能理解和识别反斜线字符 (/),尽管可以 试试看。但为避免这一点,即为了让反斜线字符 (/)在模式 对象中被完全地传递,

文档评论(0)

海川电子书城 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档