re模块

作者: 狗狗胖妞 | 来源:发表于2017-04-13 20:28 被阅读16次

    正则表达式

    预定义字符集(可以写在字符集[…]中)

    .    匹配除换行符“\n”外任意单个字符

    \w 单词字符:[A-Za-z0-9]

    \W 非单词字符:[^\w]

    \s 空白符:[<空格>\t\r\n\f\v]

    \S 非空白符[^\s]

    \d 匹配数字:[0-9]

    ^开头$结尾

    数量匹配:

    *   匹配前一个字符0次或无限次

    +    匹配前一个字符一次或无限次

    ?    匹配前一个字符0次或一次

    {m}  匹配前一个字符m次(abc{m},(abc){m})

    {m,n}  匹配前一个字符m至n次

    [a-zA-Z ]    匹配范围([^a-z] 取反)

    #所有的特殊字符在字符集中都失去其原有的特殊含义

    *? +? ?? {m,n}?  使* + ? {m,n}变为非贪婪模式

    名称捕获(?P<name>…)

    re模块的相关方法:

    re.match(p,text)  只匹配开头的位置,返回一个match对象

    re.search(p,text)  匹配到了p就返回,只返回第一个匹配到的

    re.findall(p,text)  将匹配到的全返回,返回一个list

    re.split(p,text)  以匹配到的字符为分隔符切割text,返回一个list

    re.sub(p,s,text)  替换,将p匹配到的字符串替换为s

    >>import re

    >>text=”c++ python2 python3 perl ruby lua java php5 php7”

    >>a=re.match(r’c\+\+’,text)  #返回一个match对象(匹配c++)

    >>a.group()

    >>c++

    >>a=re.match(r’java’,text)  #必须从头匹配

    >>a.group()

    >>print a

    >>None

    >>a=re.findall(r’python’,text)

    >>a

    >>[‘python’,’python’]    #返回一个列表

    >>li=re.split(r’pe’,text)

    >>li

    >>[‘c++ python2 python3’,’rl ruby lua java php5 php7’]

    >>text=”c++ python2 python3 perl ruby lua java php5 php7c++peeeo text hph”

    >>re.findall(r’p[^0-9]*?’,text)  #非贪婪模式

    [‘p’,’p’,’p’,’p’,’p’,’p’,’p’,’p’,’p’]

    命名分组

    >> text=”c++ python2 python3 perl ruby lua java php5 php7c++peeeo text hph”

    >>a=re.findall(r’(p[a-zA-Z]+) (0-9)’,text)  #位置分组

    >>a

    >>[(‘python’,’2’),(‘python’,’3’),(‘php’,’5’),(‘php’,’7’)]

    >>a=re.search(r’(?P<name>p[a-zA-Z]+) (?P<version>[0-9])’,text) #返回match对象

    >>a.group()

    python2

    >>a.groupdict()

    {‘name’:’python’,’version’:’2’}

    编译模式

    pattern=re.compile(p)先编译p模式,当正则表达式比较复杂的时候,会先编译,然后使用result=patter.match(text),就可以使用编译好的模式去匹配各种字符串了,性能会有所提升。

    >>p=re.compile(r’(?P<name>p[a-zA-Z]+) (?P<version>[0-9])’)

    >>a=p.search(“python333333”)

    >>a.groupdict()

    >>{‘name’:’python’,’version’:’3’}

    相关文章

      网友评论

          本文标题:re模块

          本文链接:https://www.haomeiwen.com/subject/pskiattx.html