美文网首页
正则表达式

正则表达式

作者: Chen_xy | 来源:发表于2017-11-03 00:00 被阅读0次

    一.原子:最基本的组成单位(每个正则表达式中至少包含一个)

    1.普通字符作为原子
    import re
    string = "taoyunjiaoyu"
    pat = "yun"
    rst = re.search(pat, string)
    print(rst)
    
    2.非打印字符为原子 例:\n, \t
    import re
    string = '''taoyunjiaoyu
    '''
    pat = "\n"
    rst = re.search(pat, string)
    print(rst)
    
    3.通用字符为原子

    \w:匹配任意一个字母、数字、下划线
    \W:除字母、数字、下划线
    \d:十进制数字
    \D:除十进制数字
    \s:空白字符
    \S:除空白字符

    import re
    string = '''taoyunsd5 64854165jiaoyu
    '''
    pat = "\w\d\s\d\w"
    rst = re.search(pat, string)
    print(rst)
    
    4.原子表: [xyz] 从中任意选一个原子
    import re
    string = '''taoyunsd5 64854165jiaoyu
    '''
    pat = "tao[xyz]un"
    rst = re.search(pat, string)
    print(rst)
    
    注: [^xyz]:除了这三个原子,其他都可以提取 ^:非

    二.元字符

    .:匹配除换行外的任意一个字符
    ^:匹配字符串的开始位置
    $:匹配字符串的结束位置
    *:前面这个元素出现0\1\多次
    ?:0\1次
    +: 1\多次
    {n}:恰好n次
    {n},:至少n次
    {n,m}:至少n次,最多m次
    |:模式选择符或
    ():模式单元
    例:

    import re
    string = 'taoyunsd5 64854165jiaoyu'
    pat = "tao.un"
    rst = re.search(pat, string)
    print(rst)
    

    三.模式修正符

    I:匹配是忽略大小写*
    M:多行匹配*
    L:本地化识别匹配
    U:对unicode字符进行解析
    S:让.匹配包括换行符*

    import re
    string = "Python"
    pat = "pyt"
    rst = re.search(pat, string, re.I)
    print(rst)
    

    四.贪婪模式与懒惰模式

    import re
    string = "poythony468654y"
    pat = "p.*y"   #贪婪模式,比较模糊
    pat2 = "p.*?y"   #懒惰模式,比较精准
    rst = re.search(pat, string, re.I)
    rst2 = re.search(pat2, string, re.I)
    print(rst)
    print(rst2)
    

    五.正则表达式函数

    1.match:从头开始匹配
    import re
    string = "poythony468654y"
    pat2 = "o.*?y"
    rst2 = re.match(pat2, string, re.I)
    print(rst2)
    #None
    
    2.search:
    3.全局匹配格式re.compile(正则表达式).findall(数据)
    rst=re.compile(pat).findall(string)
    print(rst)
    
    4.sub函数

    六.正则实例

    1.匹配.com和.cn网址
    string="<a href=http'http://www.baidu.com'>百度首页</a>"
    pat="[a-zA-Z]+://[^\s]*[.com|.cn]"
    rst=re.compile(pat).findall(string)
    print(rst)
    2.正则实例:匹配电话号码
    string="jsghajshda021-546463464646jksfjlksaf0773-546874651654165sdafsadf"
    pat="\d{4}-\d{7}|\d{3}-\d{8}"
    rst=re.compile(pat).findall(string)
    print(rst)
    

    相关文章

      网友评论

          本文标题:正则表达式

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