Python:正则表达式-1

原文来自FishC(很是不错的网站,没有广告,成为会员是很不错的选择),这是我的笔记。

正则表达式在Python中的模块名为re。个人认为就像一个超强的通配符--字符串集合,方笔我们查找,搜索文本。这些字符串集合可能包含英语句子,e-mail地址,Text命令,或其它东东。

正则表达式语言相对较小,并受到限制,也就是说并不是所有可能的字符串任务都方便使用正则表达式来完成的。

简单模式

简单模式的应用就是字符匹配,当然,1)它可以匹配自身(区分大小写模式),如FishC将完全匹配FishC,或FISHC,fishc。

2)少数字符我们称之为元字符(meta-character)是不能匹配自身的,如. ^ $ * + ? { } [ ] \ | ( ),这些可以理解为特殊字符。但元字符在方括号中不会触发特殊功能,在字符类中,他们只匹配自身,如【akm$】会匹配任何字符‘a’,‘k’,‘m’,‘$’, $是一个元字符,但在方括号中不表示特殊含义,它只匹配$字符本身。

3)可以匹配括号中为列出的所有其他字符,做法是在类的开头添加一个脱字符^,如【^5】会匹配除了5之外的任何字符。

4)最重要的元字符反斜杠\。入过在反斜杠后边紧跟一个元字符,那么元字符的特殊功能也不会触发,如匹配【,\,可以在他们前面加一个反斜杠,以消除它们的特殊功能:\[, \\。

5)反斜杠后边跟元字符去除特殊功能,跟普通字符实现特殊功能:\w匹配任何单词字符。如果正则表达式以字节的形式表示,这相当于字符类【a-zA-Z0-9】;如果正则表达式是一个字符串,会匹配Unicode数据库中标记为字母的字符。

    \d            匹配任何十进制数字;相当于【0-9】

    \D            与上面相反,匹配任何非十进制数字的字符;相当于【^0-9】

    \s            匹配任何空白字符;相当于【\t\n\r\f\v】

    \S            匹配任何非空白字符;相当于【^\t\n\r\f\v】

    \w            匹配任何单词字符

    \W            与上相反

    \b            匹配单词的开始或结束

    \B            与上相反

它们可以包含在一个字符类中,并且一样拥有特殊含义。【\s,.】是一个字符类,它将匹配任何空白字符,','或·'.'。

6)元字符‘.’:匹配除了换行符外任何字符。如果设置了re.DOTALL表示,.将匹配包括换行符在内的任何字符。

7)正则表达式除了匹配不同的字符集之外,还可以指定RE部分被重复的次数。

8)元字符*用于指定前一个字符匹配的次数(0次或多次),如ca*t将匹配ct(0个字符a),cat(1个字符a),caaat(3个字符a)。

9)正则表达式默认的重复规则是贪婪的,当重复匹配一个RE时,匹配引擎会尝试尽可能多的去匹配,直到不匹配或到了结尾,匹配引擎就会回退一个字符,然后在继续尝试匹配(这个逻辑有点复杂啊)。

10)另一个实现重复的元字符是+,用于指定前一个字符匹配一次或者多次

11)元字符?用于指定前一个字符匹配零次或一次。可以认为,它的作用就是把某种东西标志为可选的。

12)最灵活的元字符{m,n},它的含义是前一个字符必须匹配m次到n次之间,如a/{1,3}b,会匹配a/b,a//b,a///b;但不会匹配ab(没有斜杠),也不会匹配a////b(斜杠超过三个)。

13)上面的简写方式:{,n}相当于{0,n};{m,}相当于{m,+无穷};{n}则是重复前一个字符n次;{m,  n}有问题,正则表达式里面不能随意添加空格的,不然会改变原来的含义。

猜你喜欢

转载自blog.csdn.net/huan_126/article/details/80202944