成功总是垂青于有准备的人。

BIBLE模型

发掘积累过程的快感

首页»BIBLE模型 Perfect»计算机基础»编程基础»第三节:正则表达式元字符(一)

上一节了解正则表达式的结构中我们初步了解了元字符,现在我们开始正式学习元字符,我会用几个例子来介绍它们。

行的起始和结束

首先要理解的是元字符就是脱字符号^和美元符号$,在检查一行文本时,^代表一行的开始,$代表结束。

来看个小实例,如果需要统计一篇关于宠物文章里面dog出现的次数,要如何写这个正则呢?

/dog/,这样对不对?但是如果要统计每一段最开头的dog呢?应该这样/^dog/,是不是啊?如果要统计最后的就应该这样了/dog$/

在这个正则中/^dog/中,我们第一反应就是以dog开头的本文,但实际上我们应该这样理解,以字母d开头接下来是og的文本。这两种理解方式结果并没有差异,但按照字符来解读更容易理解正则表达式中的逻辑。

字符组

匹配若干字符之一

继续,什么叫匹配若干字符之一。如果我要搜索一个单词helay,但是我不确定它是否写作,就可以使用正则表达式结构体(construct)/[……]/。它允许使用者列出这个地方期望匹配的字符,通常被称作字符组(character class)。/[e]/匹配字符e,/[a]/匹配字符a,/[ea]/能匹配字符e 或者 a。所以在上面的情景中,可以写这样的正则/h[ea]lay/

注意,正则表达式默认是区分大小写的,/helay/是不能匹配到Helay的,现阶段,如果我们要匹配Helay怎么办呢?有了字符组,可以这样写,/[hH]elay/

在字符组内部,可以列举任意多个字符。例如我们要匹配HTML TAG 标签中的H标签,/\<H[123456]\>/,这个正则可以用来匹配<H1>、<H2>、<h3>等。

在字符组内部,字符组元字符"-"(连字符)表示一个范围:/H[1-6]//H[123456]/是完全一样的。/[0-9]//[a-z]/是常用的匹配数字和小写字母的简便方式。同时多重范围也是允许的。例如/[012345abcdefABCDEF]/完全可以写成/[0-5a-fA-F]/(或者写成/[a-f0-5A-F]/,顺序无所谓)。

注意了啊!只有在字符组内部,连字符号才是元字符,否则它就是普通的连字符号。其实连字符号在字符组内部也不一定是元字符。如果连字符号出现在了字符组的开头,它表示就是一个普通的字符,而不是一个范围。同样的道理,问号和点号通常被当作元字符处理,但是在字符组中则不是如此(示例:/[0-9A-Z_!.?]/,这个正则中,真正的特殊字符就只有那两个连字符)。

排除型字符组

/[^……]/取代/[……]/,这个字符组就会匹配任何未列出的字符。例如:[^1-6]匹配除了1到6的任何字符。这个字符组开头的^表示“排除”,所以这里列出了不希望匹配的字符。

注意了啊!排除型字符组表示“匹配一个为列出的字符”,而不是“不要匹配列出的字符”。这两种说法看起来一样,但是有细微的差异。有一种简单的理解排除型字符组的方法,就是把它们看作普通的字符组,里面包含的是除了“排除型字符组中所有字符”以外的字符。

互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼。 “Bible”是圣经,有权威的书,我们的本意就是为开发者提供真正有用的的资料。 我的电子邮件1217179982@qq.com,您在开发过程中遇到任何问题,欢迎与我联系。
Copyright © 2017. All rights reserved. 本站由 Helay 纯手工打造