全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

正则表达式教程之匹配一组字符详解

本文实例讲述了正则表达式教程之匹配一组字符的方法。分享给大家供大家参考,具体如下:

注:在所有例子中正则表达式匹配结果包含在源文本中的之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。

一、匹配多个字符中的某一个

在上一篇《正则表达式教程之匹配单个字符详解》中的一个匹配以na或sa开头的文本文件例子中,使用的正则表达式是.a.\.txt。如果还有一个文件是cal.txt,那么也将会被匹配到。如果只想要匹配na或sa开头的文件,该怎么办呢?

既然只想找出n或s,使用可以匹配任何字符的.显然是不行的。在正则表达式中,我们可以使用[和]来定义一个字符集合,在使用[和]来定义的字符集合里,这两个元字符之间的所有字符都是该集合的组成部分,字符集合的匹配结果是能够与该集合里的任何一个成员相匹配的的文本。

来看一个和上一篇相似一个例子:

文本:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

cal.txt

正则表达式:[ns]a.\.txt

结果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

sanatxt.txt

cal.txt

分析:这里使用的正则表达式是以[na]开头,这个集合将匹配字符n或s,不会匹配其他任何字符。[和]不匹配任何字符,它们只负责定义一个字符集合。接下来a匹配一个字符a,\.将匹配一个.字符本身,txt匹配txt字符本身,匹配结果与我们预期的一致。

但是,如果文件中如果有一个文件是usa1.txt,那么它也会被匹配出来。这是位置匹配的问题,在后面将会讨论到。

二、使用字符集合区间

上面的例子中,如果我们只想匹配以na或sa开头,后面跟一个数字的文件怎么办?正则表达式[ns]a.\.txt中,.将会匹配到任意一个字符,包括数字。这个问题可以使用字符集合来解决:

sales.txt

na1.txt

na2.txt

sa1.txt

san.txt

sanatxt.txt

cal.txt

正则表达式:[ns]a[0123456789]\.txt

结果:

sales.txt

【na1.txt】

【na2.txt】

【sa1.txt】

san.txt

sanatxt.txt

cal.txt

分析:从结果可以看到,我们只匹配出来以na或sa开头,后面跟一个数字的文件,而san.txt没有被匹配出来,因为使用了字符集合[0123456789]来限定第三个字符只能是数字。

在正则表达式中,会很频繁的使用到一些字符区间,比如0-9,a-z等等,为了简化字符区间的定义,正则表达式提供了一个特殊的元字符-来定义字符区间。像上面这个例子,我们可以使用正则表达式来匹配:[ns]a[0-9]\.txt,结果与上面完全一样。

字符区间不仅限于数字,像下面这些都是合法的字符区间:

[A-F]:匹配从A到F的所有大写字母。

[A-Z]:匹配从A到Z的所有大写字母。

[A-z]:匹配从ASCII字符A到ASCII字符z的所有字母。但这个区间一般不会用到,只是举例说明。因为它们之间还包含着[和^等在ASCII中排列在Z和a之间的字符。

字符区间的首尾字符可以是ASCII字符列表中的任意字符。但在实际使用中,最常用的还是数字和字母字符区间。

注意:在定义字符区间的时候,不能让区间的尾字符小于首字符(如[9-0]),这是不允许的。-作为元字符只能出现在[和]之间,如果在[和]之外的任何地方,它只是一个普通的字符,只会与-本身匹配。

在同一个字符集合中可以给出多个字符区间,比如:[0-9a-zA-Z]将匹配任意一个大小写字母和数字。

来看一下匹配网页中颜色的例子:

文本:

<span style="background-color:#3636FF;height:30px; width:60px;">测试</span>

正则表达式:#[0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f] [0-9A-Fa-f]

结果:<span style="background-color:【#3636FF】;height:30px; width:60px;">测试</span>

分析:在网页中,颜色一般表示为一个以#开头的RGB值,R代表红色,G代表绿色,B代表蓝色,任何一种颜色都可以通过RGB的不同组合调和出来。RGB值用16进值表示,如#000000代表白色,#FFFFFF代表黑色,#FF0000代表红色。所以网页中匹配颜色的正则表达式是以#开头,后面跟6个相同的[0-9A-Fa-f]字符集合(这可以简写成#[0-9A-Fa-f]{6},会在后面的重复匹配中讨论到)。

三、取非匹配

字符集合通常用来指定一组必须匹配其中之一的字符,但在某些场合,我们需要反过来做,给出一组不需要得到的字符,换句话说,除了在那个字符集合中的字符,其他的任意字符都可以匹配。

比如,要匹配以na或sa开头,后面跟的不是数字的文件:

文本:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

san.txt

正则表达式:[ns]a[^0-9]\.txt

结果:

sales.txt

na1.txt

na2.txt

sa1.txt

sanatxt.txt

【san.txt】

分析:这个例子使用的模式正好与前面的相反,前面[0-9]只匹配数字,而这里[^0-9]匹配的是非数字。

注意:^在[和]之间表示取非,如果出现在正则表达式的开头,表示位置匹配匹配了,这将在后面讨论到。同时,^的效果将作用于给定字符集合里的所有字符或字符区间,而不仅限于紧跟在^字符后面的那一个字符或字符区间。如[^0-9a-z]表示不匹配任何数字或小写字母。

四、小结

元字符[和]用于定义一个字符集合,其含义是必须与该集合里的字符之一匹配。定义一个字符集合的方法有两种:一是把所有的字符都列举出来;二是利用元字符-以字符区间的方式给出。字符集合可以使用元字符^来取非,这将把给定的字符集合强行排除在匹配操作外,除了该字符集合里的字符,其他字符都可以匹配。

在接下来的文章中,我们将会讨论正则表达式中的一些元字符的使用。

PS:这里再为大家提供2款非常方便的正则表达式工具供大家参考使用:

JavaScript正则表达式在线测试工具:
http://tools./regex/javascript

正则表达式在线生成工具:
http://tools./regex/create_reg

希望本文所述对大家正则表达式学习有所帮助。


# 正则表达式  # 匹配  # 一组字符  # 正则表达式匹配用户密码  # Javascript校验密码复杂度的正则表达式  # 手机号码  # 密码正则验证  # php password密码验证正则表达式(8位长度限制)  # js正则实现的密码框简单制作  # 还可以替换成自己想用得符号  # 密码强度检测函数(正则)  # 正则表达式教程之位置匹配详解  # 正则表达式教程之重复匹配详解  # 正则表达式教程之匹配单个字符详解  # JS正则匹配中文的方法示例  # 正则匹配密码只能是数字和字母组合字符串功能【php与js实现】  # 将会  # 可以使用  # 这是  # 配以  # 多个  # 出现在  # 但在  # 会在  # 只想  # 在后面  # 这将  # 与该  # 都是  # 不匹配  # 是一个  # 也会  # 都在  # 不需要  # 一是 


相关文章: 制作网站外包平台,自动化接单网站有哪些?  建站之星ASP如何实现CMS高效搭建与安全管理?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  如何在建站宝盒中设置产品搜索功能?  公司网站的制作公司,企业网站制作基本流程有哪些?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  建站主机与服务器功能差异如何区分?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何选择最佳自助建站系统?快速指南解析优劣  如何快速建站并高效导出源代码?  定制建站如何定义?其核心优势是什么?  建站主机如何选?高性价比方案全解析  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  如何快速搭建二级域名独立网站?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何在Windows服务器上快速搭建网站?  如何在阿里云域名上完成建站全流程?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  制作旅游网站html,怎样注册旅游网站?  如何制作一个表白网站视频,关于勇敢表白的小标题?  ,sp开头的版面叫什么?  XML的“混合内容”是什么 怎么用DTD或XSD定义  ,有什么在线背英语单词效率比较高的网站?  已有域名和空间,如何快速搭建网站?  高端云建站费用究竟需要多少预算?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  建站之星如何保障用户数据免受黑客入侵?  制作销售网站教学视频,销售网站有哪些?  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Python多线程使用规范_线程安全解析【教程】  如何在橙子建站上传落地页?操作指南详解  完全自定义免费建站平台:主题模板在线生成一站式服务  定制建站价位费用解析与套餐推荐全攻略  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  建站之星如何实现PC+手机+微信网站五合一建站?  定制建站是什么?如何实现个性化需求?  公众号网站制作网页,微信公众号怎么制作?  黑客如何利用漏洞与弱口令入侵网站服务器?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  建站之星代理如何优化在线客服效率?  如何在搬瓦工VPS快速搭建网站?  ,如何利用word制作宣传手册?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  网站制作服务平台,有什么网站可以发布本地服务信息?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  做企业网站制作流程,企业网站制作基本流程有哪些? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。