正则模块

正则模块:

一正则介绍:

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

对字符串的匹配

.python中使用正则:

import re

.正则的语法;

1.十一个元字符:

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

.

表示一个, 匹配除换行符以外的任意字符

^

匹配字符串的开始

$

匹配字符串的结束

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{}

{n}    重复n

{n,}    重复n次或更多次

{n,m}    重复nm

[]

注意: 在字符集里有功能的符号: - ^ \

Eg: In [343]: re.findall("[*()]","he*()llo world")

Out[343]: ['*', '(', ')']

[aeiou]匹配的aeiou中任意字符

[^aeiou]    匹配除了aeiou这几个字母以外的任意字符

|

示或的关系

()

分组

\

转义

2.什么是贪婪模式:

正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配.

非贪婪模式: 就是匹配到结果就好,就少的匹配字符

eg:

贪婪模式

In [340]: re.search("hell.*","hello world").group()

Out[340]: 'hello world'

非贪婪模式

In [341]: re.search("hell.*?","hello world").group()

Out[341]: 'hell'

3. 元字符之转义符\

\d 匹配任何十进制数;它相当于类 [0-9]

\D 匹配任何非数字字符;它相当于类 [^0-9]

\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]

\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]

\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]

\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]

\b 匹配一个特殊字符边界,比如空格 &,#等

 

4.有一个坑:

 

图片出自: http://www.cnblogs.com/yuanchenqi/articles/5732581.html

 

5.一点点补充:

给分组命名

In [357]: re.search("(?P<name>t\w+)","my name is tom").group()

Out[357]: 'tom

posted @ 2017-10-31 18:12  两只老虎111  阅读(227)  评论(0编辑  收藏  举报