正则表达式简介
正则表达式
正则表达式(Regular Expression)是一门简单语言的语法规范,是强大、便捷、高效的文本处理工具,它应用在一些方法中,对字符串中的信息实现查找、替换和提取操作。
正则表达式 基本来讲是一种模式,描述一组具有该共同模式的字符串。如果您是 Perl 程序员,应该非常熟悉 Java 语言中的正则表达式 (regex) 模式语法。但是,如果您不习惯使用正则表达式语法,它可能看起来很怪异。本节指导您在 Java 程序中使用正则表达式。
正则表达式在所有语言当中都是经常会用到的一个功能,可以用来搜索模式或字符串中的单词。MongoDB 也提供了这一功能,使用 $regex 运算符来匹配字符串模式。MongoDB 使用 PCRE(可兼容 Perl 的正则表达式)作为正则表达式语言。 与文本搜索不同,使用正则表达式不需要使用任何配置或命令。 假如 posts 集合有下面这个文档,它包含着帖子文本及其标签。
正则表达式(英文:Regular Expression)在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。通过本教程的学习让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。
前面介绍过 MySQL 。MySQL 还支持另一种基于正则表达式的模式匹配操作,使用的运算符是 REGEXP。如果你学过 PHP 或 PERL,那么这就很好理解了,因为这里讲的这种匹配方式跟那些脚本语言中的正则表达式很相似。 下面就是一个模式列表,其中结合使用了 REGEXP 运算符。 模式模式匹配对象^字符串的开始位置$字符串的结尾.单个字符[...
接下来的几章中,我们将会看一下一些用来操作文本的工具。正如我们所见到的,在类 Unix 的操作系统中,比如 Linux 中,文本数据起着举足轻重的作用。但是在我们能完全理解这些工具提供的所有功能之前,我们不得不先看看,经常与这些工具的高级使用相关联的一门技术——正则表达式。
这部分内容可以说是学习shell脚本之前必学的内容。如果你这部分内容学的越好,那么你的shell脚本编写能力就会越强。所以不要嫌这部分内容啰嗦,也不要怕麻烦,要用心学习。一定要多加练习,练习多了就能熟练掌握了。在计算机科学中,正则表达式是这样解释的:它是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
正则表达式具有伟大技术发明的一切特点,它简单、优美、功能强大、妙用无穷。对于很多实际工作来讲,正则表达式简直是灵丹妙药,能够成百倍地提高开发效率和程序质量。
说明:正则表达式通常用于两种任务:1.验证,2.搜索/替换。用于验证时,通常需要在前后分别加上^和$,以匹配整个待验证字符串;搜索/替换时是否加上此限定则根据搜索的要求而定,此外,也有可能要在前后加上\b而不是^和$。此表所列的常用正则表达式,除个别外均未在前后加上任何限定,请根据需要,自行处理。
小括号的另一种用途是通过语法(?#comment)来包含注释。例如:2[0-4]\d(?#200-249)|25[0-5](?#250-255)|[01]?\d\d?(?#0-199)。要包含注释的话,最好是启用“忽略模式里的空白符”选项,这样在编写表达式时能任意的添加空格,Tab,换行,而实际使用时这些都将被忽略。启用这个选项后,在 # 后面到这一行结束的所有文本都将被当成注释忽略掉。
接下来的四个用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像\b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。最好还是拿例子来说明吧:(?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式 exp。比如\b\w+(?
有时需要查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外,其它任意字符都行的情况,这时需要用到反义:表3.
我们已经提到了怎么重复单个字符(直接在字符后面加上限定符就行了);但如果想要重复多个字符又该怎么办?你可以用小括号来指定子表达式(也叫做分组),然后你就可以指定这个子表达式的重复次数了,你也可以对子表达式进行其它一些操作(后面会有介绍)。(\d{1,3}\.){3}\d{1,3}是一个简单的IP地址匹配表达式。
要想查找数字,字母或数字,空白是很简单的,因为已经有了对应这些字符集合的元字符,但是如果你想匹配没有预定义元字符的字符集合(比如元音字母 a,e,i,o,u),应该怎么办?很简单,你只需要在方括号里列出它们就行了,像[aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)。我们也可以轻松地指定一个字符范围,像[0-9]代表的含意与\d就是完全一致的:一位数字;
你已经看过了前面的*,+,{2},{5,12}这几个匹配重复的方式了。下面是正则表达式中所有的限定符(指定数量的代码,例如*,{5,12}等):表 2.常用的限定符代码/语法说明*重复零次或更多次+重复一次或更多次?
现在你已经知道几个很有用的元字符了,如\b,.,*,还有 \d.正则表达式里还有更多的元字符,比如\s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等。\w 匹配字母或数字或下划线或汉字等。下面来看看更多的例子:\ba\w*\b匹配以字母 a 开头的单词——先是某个单词开始处 (\b),然后是字母 a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)。
如果你不觉得正则表达式很难读写的话,要么你是一个天才,要么,你不是地球人。正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。由于难于读写,容易出错,所以找一种工具对正则表达式进行测试是很有必要的。不同的环境下正则表达式的一些细节是不相同的,本教程介绍的是微软 .Net Framework 4.0 下正则表达式的行为,所以,我向你推荐我编写的 .
学习正则表达式的最好方法是从例子开始,理解例子之后再自己对例子进行修改,实验。下面给出了不少简单的例子,并对它们作了详细的说明。假设你在一篇英文小说里查找 hi,你可以使用正则表达式 hi。这几乎是最简单的正则表达式了,它可以精确匹配这样的字符串:由两个字符组成,前一个字符是h,后一个是 i。
关注时代Java