(PS: 这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习 JAVA 正则表达的必读篇。作者是个正真有功力的人,阅读愉快) 在 Sun 的 Java JDK 版本中, Java 自带了支持正则表达式的包, 本文就抛砖引玉地介绍了如何使用 包。可粗略估计一下,除了偶尔用 Linux 的外,其他 Linu x 用户都会遇到正则表达式。正则表达式是个极端强大工具,而且在字符串模式- 匹配和字符串模式- 替换方面富有弹性。在 Unix 世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛。正则表达式的引擎已被许多普通的 Unix 工具所实现telegram中文版,包括 grep , awk , vi和 Emac s 等。此外, 许多使用比较广泛的脚本语言也支持正则表达式, 比如 Python , Tcl , JavaScript , 以及最著名的 Perl 。我很早以前就是个 Perl 方面的黑客,如果你和我一样话,你也会非常依赖你手边的这些强大的 text-munging 工具。近几年来, 像其他程序开发者一样, 我也越来越关注 Java 的开发。 Java 作为一种开发语言,有许多值得推荐的地方,但是它一直以来没有自带对正则表达式的支持。直到最近,借助于第三方的类库, Java 开始支持正则表达式,但这些第三方的类库都不一致、兼容性差, 而且维护代码起来很糟糕。这个缺点, 对我选择 Java 作为首要的开发工具来说,一直是个巨大的顾虑之处。你可以想象, 当我知道 Su n的 Java JDK 0 版本包含了 ( 一个完全开放、自带的正则表达式包)时, 是多么的高兴! 很搞笑的说, 我花好些时间去挖掘这个被隐藏起来的宝石。我非常惊奇的是, Java 这样的一个很大改进( 自带了 包) 为什么不多公开一点呢?! 最近,Java 双脚都跳进了正则表达式的世界。 包在支持正则表达也有它的过人之处whatsapp登录, 另外 Java 也提供详细的相关说明文档。使得朦朦胧胧的 regex 神秘景象也慢慢被拨开。有一些正则表达式的构成( 可能最显著的是, 在于糅合了字符类库)在 Perl 都找不到。在 regex 包中, 包括了两个类, Pattern( 模式类)和 Matcher( 匹配器类)。 Pattern 类是用来表达和陈述所要搜索模式的对象, Matcher 类是真正影响搜索的对象。另加一个新的例外类, PatternSyntaxException ,当遇到不合法的搜索模式时,会抛出例外。即使对正则表达式很熟悉,你会发现,通过 java 使用正则表达式也相当简单。要说明的一点是, 对那些被 Perl 的单行匹配所宠坏的 Perl 狂热爱好者来说, 在使用 java 的 rege x 包进行替换操作时,会比他们所以前常用的方法费事些。本文的局限之处, 它不是一篇正则表达式用法的完全教程。如果读者要对正则表达进一步了解的话,推荐阅读 Jeffrey Frieldl 的 Mastering Regular Expressions ,该书由 O’ Reill y 出版社出版。我下面就举一些例子来教读者如何使用正则表达式, 以及如何更简单地去使用它。设计一个简单的表达式来匹配任何电话号码数字可能是比较复杂的事情, 原因在于电话号码格式有很多种情况。所有必须选择一个比较有效的模式。比如:(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 的解释器来说whatsapp web, 在反斜线字符(/) 前的字符有特殊的含义。在 java 中,与 regex 有关的包, 并不都能理解和识别反斜线字符(/), 尽管可以试试看。但为避免这一点, 即为了让反斜线字符(/) 在模式对象中被完全地传递, 应该用
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



