码迷,mamicode.com
首页 > 其他好文 > 详细

正则-简单的模式

时间:2017-04-09 22:35:36      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:alt   大小   pytho   开头   code   blog   空白   列表   character   

我们将从最简单的正则表达式开始,由于正则表达式常用于操作字符串的,因此我们从最常见的任务下手:字符匹配

字符匹配

大多数字母和字符会匹配它们自身。

举个例子:正则表达式FishC将完全匹配字符串‘FishC’。

(你可以启用不区分大小写模式,则正则表达式FishC可以匹配‘FISHC’,或‘fishc’)

当然这个规则也有例外。

有少数特殊的字符我们称之为‘元字符’(metacharacter),它们并不能匹配自身,它们定义了字符类,子组匹配和模式重复次数等。

本文用很大的篇幅讨论了各种元字符及其作用。

下面是元字符的完整列表

. ^ $* + ? {} \ | ()

注释:如果没有这些元字符,正则表达式就会变得跟字符串的find()方法一样平庸了。

1、方括号

我们先来看一下方括号[],它们指定一个字符类用于存放你需要匹配的字符集合。

可以单独列出需要匹配的字符,也可以通过两个字符和一个横杆指定匹配的范围。

例如:[abc]会匹配字符a,或b,或c;[a-c]可以实现相同功能。后者使用范围来表示与前者相同的字符集合。

如果你想只匹配小写字母,你的RE可以写成[a-z]。

 

需要注意的一点是:元字符在括号中不会触发‘特殊功能’,在字符类中,它们只匹配本身。

例如:[akm$]会匹配‘a‘,‘k‘,‘m‘,或‘$‘,$是一个元字符,但是在方括号中它不代表特殊含义,它只匹配$字符本身。

2 、^

你还可以匹配方括号中位列出的其他所有字符。做法是在类的开头添加一个脱字字符^,

例如:[^5]会匹配除了‘5’之外的任何字符。

3、反斜杠

或许最终要的元字符当属反斜杠了‘\’,跟python的字符串规则一样,如果在反斜杠后面紧跟着一个元字符,那么元字符的‘特殊功能’也不会触发。

例如:你需要匹配[ 或 \ , 你可以在前加反斜杠以消除他们的特殊功能: \[ , \\。

反斜杠后面跟一些字符还可以表示特殊的意义,例如表示十进制的数字,表示所有的字母或者表示所有的非空白的字符集合。

注释:反斜杠很牛逼,后面加元字符则去除其特殊功能,后面加普通字符则实现特殊功能。

例如:\w 匹配任何单词字符。

如果正则表达式以字节的形式表示,这相当于[a-zA-Z0-9]

如果正则表达式表示的是一个字符串,\w 会匹配所有的unicode数据库

你可以在编译正则表达式的时候,通过提供re.ASCII表示进一步限制 \w 的定义。

注释:re.ASCII标志使得\w 只能匹配ASCII字符,不要忘了python是unicode的。

技术分享

它们可以包含在一个字符类中,并且一样拥有特殊含义。

例如:[\s,.]是一个字符类,它将匹配任何空白字符,‘,‘或‘.‘

4、‘ . ‘

最后我们讲的一个元字符是 ‘.‘ ,它匹配除了换行符以外的任何字符。

如果设置了re.DOTALL标志,.将匹配包括换行符在内的任何字符。

正则-简单的模式

标签:alt   大小   pytho   开头   code   blog   空白   列表   character   

原文地址:http://www.cnblogs.com/themost/p/6686775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!