</pre><p> 所有笔记均在学习云课堂http://study.163.com/course/courseLearn.htm?courseId=302001#/learn上所得</p><p>字符匹配</p><ul><li>普通字符</li></ul><ul><li>元字符:</li></ul><ol><li>[ ]:用来指定一个字符集可匹配其中任一个字符<pre name="code" class="html">import re
st="top tip tqp twp"
res=r"t[io]p"
re.findall(res,st)
['top','tip']
res=r"t[^io]p"
re.findall(res,st)
['tpq','twp']
- ^:匹配行首或者除了某个字符集之外
s="helllo world, hello boy"
r=r"hello"
re.findall(r,s)
['hello','hello']
r=r"^hello"
re.findall(r,s)
[‘hello']
- $:匹配行尾
- \ :后面加不同字符表示不同意义:
\[或者\\表示取消所有字符:
\d 匹配任何十进制数;即类[0-9]
\D 任何非数字字符
\s 任何空白字符,即类[\t\n\r\f\v]
\S 任何非空白字符
\w 任何字母数字字符
\W 任何非字母数字字 - * : 指定前一个字符可被匹配零次或更多次
#匹配北京电话号码010-12345678(8位)
r=r"^010-\d{8}"
#而用*可以重复0或更多次
r=r"ab*"
re.findall(r,'a')
['a']
- + :指定前一个字符至少被匹配1次
- ? :匹配一次或零次;可以做最小匹配
r=r"^010-?\d{8}$"
re.findall(r,'010-12345678')
[010-12345678]
re.findall(r,'01012345678')
[01012345678]
- {m n } :至少重复m次,至多n次
- split函数:切割
s="123 +456-789*000"
re.split(r'[\+\-\*]',s)
['123','456'.,'789','000']
- subn函数:替换
rs=r'c..t'
re.sub(re,'python','csvt caat cvvt cccc')
('python python python cccc',3)
tips: dir(re)查看re模块中的函数,help(函数名)获取函数使用方法