Python 正则表达式

re:

re.match(pattern, string, flag=0)  从字符串的起始位置匹配

re.I   忽略大小写

re.L  本地户识别

re.M  多行匹配,影响^ $

re.S  匹配包括换行符在内的所有字符

re.U  根据unicode 字符集, 解析字符

re.X  以更灵活的方式理解正则表达式

 

re.search(pattern, string, flag=0)  扫描整个字符串,返回第一个结果

re.findall(pattern,string, flag=0)  扫描整个字符串,返回所有结果

元字符

匹配单个字符

. 匹配除换行符以外的任意字符

[] 

[^] 匹配除了以外的所有字符

\d  数字  同[0-9]

\D 非数字 同 [^0-9]

\w 字母和下划线 数字,[0-9a-zA-Z_]

\W 非字母 下划线,数字

\s  任意空白符  空格 换行 换页 回车 制表  同[ \f\n\r\t]

\S 非空白字符

 

锚字符边界字符:

^  行首

$ 行尾

\A  匹配字符串的开始  和^ 的区别 是 \A 只匹配整个字符串的开头, 即使在re.M 模式下 不会匹配行首

\Z  匹配字符串的结尾 和$d 的区别是\Z 只匹配末尾, 即使在re.M 的模式下、

\b 匹配单词的边界  , 单词和空格间的位置

\B 匹配非单词边界     

 

匹配多个字符:

(abc)xyz作为一个整体去匹配

x? 匹配0个或一个x字符

x* 匹配0和或者任意多个字符

x+ 匹配一个或者多个任意字符

x{n}  匹配n个x

x{n,}

x{n,m}

x|y  匹配x或者y

(?:x) 类似(xyz) 但不是元组

 

re.finditer(pattern, string, flag)  与findall 类似, 返回的是一个迭代器

re.sub(pattern,repl,string,count=0,flag)  在字符串匹配正则,再把它们替换成指定的字符串, 返回值是字符串

re.subn(pattern,repl,string,count=0,flag)  ,返回值是元组,包括被替换的次数

 

分组:

除了匹配字符串外, 还能提取子串, 用() 表示分组

?p<greouname>

编译:

1. 编译正则表达式

2. 用编译后的正则表达式 匹配

 re.compile(pattern,flag)

 

posted @ 2018-11-17 15:30  帕丁顿  阅读(90)  评论(0)    收藏  举报