您的位置:首页 > 其它

正则表达式快速入门(三)

2009-06-17 14:32 337 查看
3. 用法举例说明
1) 表达式:\bhi\b
所需语法:\b――匹配一个单词的开始或结束,也就是指单词和空格间的位置;
含义说明:精确地查找“hi”这个单词
查找结果:能查找到类似“hi,how are you!”这样的单词;如图2所示



图2
2) 表达式:\bhi\b.*\bLucy\b
所需语法:\b――匹配一个单词的开始或结束,也就是指单词和空格间的位置;. ――匹配除换行符以外包括空格和Tab键的任意字符;*――重复前一个字符或一组表达式零次或更多次;
含义说明:先是一个单词hi(前后用“\b”来匹配为一个单词),然后是任意个任意字符但不能是换行(用“.”来匹配),最后是“Lucy”这个单词。
查找结果:能查找到类似“hi,i am Lucy”这样的字符串;如图3所示



图3
3) 表达式:0\d{2}-\d{8}
所需语法:\d――匹配一位数字;\d{n}――匹配n位数字;
含义说明:这是一个查找电话号码的正则表达式,“0”代表以0开头的字符串,\d后面的{2}({8})的意思是前面\d必须连续重复匹配2次或8次;
查找结果:能查找到类似“020-88889999”这样的字符串;如图4所示



图4
4) 表达式:\ba\w*\b
所需语法:b――匹配一个单词的开始或结束,也就是指单词和空格间的位置;\w――匹配字母或数字或下划线或汉字等;*――匹配的是数量,也就是匹配前边的内容可以连续重复使用任意次;
含义说明:匹配以字母a开头的单词――先是某个单词开始处(\b),然后是字母a,然后是任意数量的字母或数字(\w*),最后是单词结束处(\b)。
查找结果:能查找到类似“abc”这样的字符串;所图5所示



图5
5) 表达式:\d+
所需语法:\d――匹配一位数字;+――重复前一个字符或一组表达式一次或更多次;
含义说明:\d+匹配1个或更多连续的数字。这里的+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
查找结果:能查找到类似“989”这样的字符串;如图6所示



图6
6) 表达式:\b\w{6}\b
所需语法::\b――匹配一个单词的开始或结束,也就是指单词和空格间的位置;\w――匹配任意一个字母或数字或下划线或汉字等;{n}――重复n次,只对邻近的字符或一组表达式起作用;
含义说明:匹配刚好6个字符的单词
查找结果:能查找到类似“strong”这样的字符串;如图7所示



图7
7) 表达式:^\d{5,12}$
所需语法:^――匹配字符串的开始的一个位置;$――匹配字符串的结束的一个位置;\d――匹配一位数字;{n,m}――重复n到m次;
含义说明:匹配长度在5至12位的数字串。“{5,12}”的意思是重复的次数不能少于5次,不能多于12次,否则都不匹配。这个表达式常用在验证输入的内容,比如用于一个网站要求你填写的QQ号必须是5位到12位数字时。
查找结果:能查找到类似“87122234”这样的字符串;如图8所示



图8
8) 表达式:Windows\d+
所需语法:\d――匹配任意一位数字,等价于[0~9];+――重复前一个字符或一组表达式一次或更多次;
含义说明:匹配Windows后面跟1个或更多数字
查找结果:能查找到类似“Windows2003”这样的字符串;如图9所示



图9
9) 表达式:unibetter\.com
所需语法:\――转义符,将特殊字符转化为普通字符,取消后面跟着的字符的特殊意义;
含义说明:匹配unibetter.com
查找结果:能查找到 “unibetter.com”这样的字符串;如图10所示



图10
10) 表达式:[cdefg]
所需语法:[]――匹配括号里任何一个字符或字符串;
含义说明:查找符合任何一个字母“c”或“d”或“e”或“f”或“g”的字符串;
查找结果:能从类似“dffasdfac”这样的字符串里查找出单个的“d”、“f”、“c”字母;
拓展:[0-9]代表的含意与\d就是完全一致的,也就是匹配一位数字;同理[a-z0-9A-Z_]也完全等同于\w(如果只考虑英文的话)。如图11所示



图11
11) 表达式:\(?0\d{2}[) -]?\d{8}
所需语法:\――转义符,将特殊字符转化为普通字符,取消后面跟着的字符的特殊意义;?――重复前一个字符或一组表达式零次或一次;\d――匹配任意一位数字,等价于[0~9];{n}――重复n次,只对邻近的字符或一组表达式起作用;[]――匹配包含在其中的单个字符;
含义说明:这个表达式看似复杂,但其实是分为以下几部分的“\(?”、“0”、“\d{2}”、“[) -]?”、“\d{8}”。首先是一个转义字符\(,然后是表示出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,紧跟的是出现1次或不出现(?),最后是8个数字(\d{8})。
查找结果:可匹配像(010)88886666,或022-22334455,或02912345678等号码;如图12所示



图12
12) 表达式:0\d{2}-\d{8}|0\d{3}-\d{7}
所需语法:\d――匹配任意一位数字,等价于[0~9];{n}――重复n次,只对邻近的字符或一组表达式起作用;|――或的表达式,表示分支条件,匹配代码左侧的表达式或匹配代码右侧的表达式两者之一;注意:当左侧的表达式匹配条件相符的话,不再检测右侧的表达式;
含义说明:匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-22223333),一种是4位区号,7位本地号(0736-5587952)。
查找结果:查找到类似010-22223333或0736-5587952的电话号码;如图13所示



图13本文出自 “梁卓耀的兵禅道――用..” 博客,请务必保留此出处http://liangzhuoyao.blog.51cto.com/808081/167608
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: