前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式一元字符与字符组

正则表达式一元字符与字符组

作者头像
郑小超.
发布2018-01-24 15:38:33
8400
发布2018-01-24 15:38:33
举报
文章被收录于专栏:GreenLeavesGreenLeaves

1、^   符   ---代表一行的开始

代码语言:javascript
复制
"category".match(/^cat/); //返回以c开头的紧接一个a,紧接一个t的文本数组!

2、$   符   ---代表一行的结束

代码语言:javascript
复制
alert("category".match(/ry$/)); //返回以y结尾,紧接着前面一个是r的文本数组   输出:ry

3、[........]    表示字符组用于匹配一串字符

如果我们需要搜索的单词是"gray",同时又不确定他是否写作"gray",这个时候就可以使用正则表达式结构体-[........]-字符组。他允许使用者在字符组内列出希望匹配的字符.

e表示匹配字符e,a表示匹配字符a,[ea]则表示能匹配a或者e,所以要匹配"gray"可以这样写:gr[ea]y,表示先找到一个g,紧接着一个r,然后是一个e或者a,紧接这最后一个是y。

注意:字符组中的内部的匹配情况,与外部的不一样,他表示的是或.

代码语言:javascript
复制
alert("gray".match(/^gr[ae]y/)); //返回以g开头,紧接着是一个r,在紧接着是一个a或者e,紧接着的最后是一个y   输出:gray

在一个字符组中可以列举任意多个字符,例如[123456]匹配1到6中的任意的一个数字,这个字符组,可以作为"H<123456>"的一部分,用来匹配<H1>,<H2>,<H3>等等。

3.1  字符组元字符

在字符组内部,字符组元字符   '-' (连字符)表示一个范围,如下,'<H[1-6]>'和'<H[123456]>'是一样的!

'[0-9]'和'[a-z]'是匹配常用的数字和小写子母的常用方式!也可以多重范围也是容许的,比如我们要匹配一个单词必须以字母数组下划线开头,代码可以这样写:

代码语言:javascript
复制
 alert("1gray".match(/^[a-zA-Z0-9_]*/)); //返回以字母(不区分大小写)、数字、下划线开头的文本数组   输出:1gray

3.2 排除型字符组

用排除型字符组[^......]取代字符组[..........],这个字符组就会匹配任何未列出的字符!

例如[^1-6],就会匹配除了1到6以外的任何字符,字符组的开头 "^" 表示排除的意思。和1中所讲的意思不同,这里"^"用于字符组表示排除的意思,如果单独使用表示一行的开始(以"^"紧接着的字符为开头也可以这样理解)。有如下代码:

代码语言:javascript
复制
alert(".gray".match(/^[^a-zA-Z0-9_]/)); //匹配以(排除a-z、A-Z、0-9之外的任意字符)开头的单个字符   输出:.

4   .   符       用于匹配任意字符,相当于一个占位符

元字符"."号是用来匹配任意字符的字符组的简便写法,如果我们在表达式中需要一个"匹配任意字符"的占位符,用点就很方便。

例如我们需要检索03/19/76、03-19-76或03.19.76,正则匹配代码如下:

第一种精确匹配方式:

代码语言:javascript
复制
03[/.-]19[/.-]76

第二种用"."号匹配方式:

代码语言:javascript
复制
03.19.76

这种方式除了能匹配我们需要的结果外,还匹配出了诸如:19 203319 76等额外的结果!

所以比较上面两种匹配规则,第一种更加的精确,但是更难读,也更难写,第二种更容易理解,但是不够细致!在我们选择匹配的方式时,需要对需要检索的文本有深入的了解,在按需选择匹配规则!

5  |  符

"|"符是一个非常简洁的元字符,他的意思是"或"。依靠它,我们能把不同的子表达式组合成一个总表达式,而这个总表达式又能匹配任意的子表达式

假如Bob和Robert是两个表达式,但Bob|Robert 能够同时匹配任意一个的正则表达式,在这样的组合,子表达式被称为"多选分支"。

回头来看3的例子,gr[ea]y的例子,有意思的是,它可以写作grey|gray,或者是gr(a|y);

注意:这里gr[a|e]y不符合我们的要求,在这里|和a、e一样只是一个普通的字符!

gr[ea]y和gr(e|a)y这两个例子可能会让人觉得多选结构和字符组本身没多大区别,但是注意,一个字符组只能匹配单词中的一个字母,而每个多选结构自身可能都是完整的正则表达式,可以匹配任意长度的文本!

6  -i    符忽略大小写

      E-Mail中header中的字段类型通常以大写字母开头,例如Subject和From,但是E-Mail标准并没有对大小写进行严格的规定,所以DATE和from也是合法的,如果用[Ff][Rr][Oo][Mm]取代From,这样能匹配所有不同类型的from,但是这样很不方便,这里有另外一种方法告诉egerp在比较时忽略大小写,也就是不进行区分大小写的匹配,就能忽略大小写字母的差异。

      该功能并不是正则表达式语言的一部分,确实很多工具软件提供的有用的特性,egerp的命令行参数"-i"表示进行忽略大小写的匹配,把-i写在正则表达式之前;

7   单词分界符

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档