zoukankan      html  css  js  c++  java
  • Python re模块 正则表达式

    # 二元字符:.  ^ $  *  +  ?  { }  [ ] | ( ) 
    # 模糊匹配

    import re

    # . 通配符
    print(re.findall("w..l","wedfldsafwlll"))
    # ['wlll']
    # ^ 首字符
    print(re.findall("^h....", "heirkdjfkd"))
    # ['heirk']
    # $ 尾字符
    print(re.findall(".c$","sfasjdfhajdhkjhfakjhdhc"))
    # ['hc']
    # * 重复匹配 默认贪婪匹配 [0, +OO] *表示匹配前一个字符0次或无限次 .* 重复任意字符
    print(re.findall("ab*", "djhkbfhakjaabbbbbbfbabababea"))
    # ['a', 'a', 'abbbbbb', 'ab', 'ab', 'ab', 'a'] a+ b 0次到+00次
    print(re.findall("ab *", "djhkbfhakjaabbbbbbfbabababea"))
    # ['ab', 'ab', 'ab', 'ab']
    # + [1, +00]
    print(re.findall("ab+", "skjdfkabsjabbbgabsa")) # 重复1到无穷个b
    # ['ab', 'abbb', 'ab']
    # ? [0, 1]
    print(re.findall("a?b", "djaakjdbhfakjdhfjkab")) # 0-1个a
    # ['b', 'ab']
    # {}
    print(re.findall("a{5}b", "sdfafdasfazaaaaab")) # a重复5次
    # ['aaaaab']
    print(re.findall("a{1,}b", "aaababdaaaaaaaaaabafdaaab")) # a重复1到无穷大次
    # ['aaab', 'ab', 'aaaaaaaaaab', 'aaab']
    # [] 取消元字符的特殊功能 ^ - 除外
    print(re.findall("[a-z]", "adsf")) # 匹配a-z任一字符
    # ['a', 'd', 's', 'f']
    print(re.findall("[a,,]", "adfad,sf*dsf"))
    # ['a', 'a', ',']
    print(re.findall("[a-zA-Z1-9]", "adfa23245289AFDHGSDd,sf*dsf"))

    # ^放在[]里,表示取反
    print(re.findall("[^4,5]", "dsj4j4k5*kj65343jk")) # ^ 后面的4,5为一组
    # ['d', 's', 'j', 'j', 'k', '*', 'k', 'j', '6', '3', '3', 'j', 'k']

    #
    # d 匹配十进制数
    # D 匹配任何非数字字符
    # s 匹配任何空白字符
    # S 匹配非任何空白字符
    # w 匹配任何字母数字字符
    # W 匹配任何非字母数字字符
    #  匹配一个特殊边界

    print(re.findall("d{11}", "2342345245stsdfsdf34567865432")) # 匹配11个数字
    # ['34567865432']
    print(re.findall(r"i", "i am a li&t"))
    # ['i']

    print(re.search("ad", "adffdweasdasdad").group())
    # ad
    str_1 = r"adjkladfhiasasueyti@ksjdf493572.comadsfadfacomrtwtrw"
    print(re.search("a+", "adadfa+").group()) # a+

    print(re.findall(r"\", "ac"))


    d = re.findall("\\", str_1) # re模块中 特殊字符,需要使用转义字符
    # python 解释器解释, 为特殊字符,需要使用转义字符进行转义
    print(d)
    # ['\']
    e = re.search(r"\", str_1) # r 表示后面的字符为python中的原生字符
    print(e)
    # <re.Match object; span=(14, 15), match='\'>

    f = re.search(r"com", str_1) # 在python中指退格
    # 在re模块中指单词的边界,所以使用r
    print(f)
    # <re.Match object; span=(33, 36), match='com'>

    # () 做分组
    print(re.search("(as)+", str_1))
    # <re.Match object; span=(10, 14), match='asas'>
    print(re.search("(as)+", str_1).group()) # 贪婪匹配
    # asas

    str_2 = "asdfaas3"
    print(re.search("(as)|3", "asdd893").group()) # | 或
    # as
    print(re.search("(as)|3", "afsdd893").group())
    # 3
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group())
    # 234/yui
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group("id"))
    # 234
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group("name"))
    # yui

    # 正则表达式的方法

    str_1 = r"adjkladfhiasasueyti@ksjdf493572.comadsfadfacomrtwtrw"
    a = re.match("com", str_1).group() # 只在字符串起始位置匹配。 找不到,返回None 匹配一次
    # 返回一个对象(object),对象可以调用group()返回结果

    print(a)

    # None
    b = re.search("com", str_1) # re.search匹配整个字符串,直到找到一个匹配,找不到返回None
    # 返回一个对象(object),对象可以调用group()返回结果
    print(b)
    # <re.Match object; span=(33, 36), match='com'>


    c = re.findall("com", str_1) # 字符串中找到正则表达式所匹配的所有子串,
    # 并返回一个列表,如果没有找到匹配的,则返回空列表
    print(c)
    # ['com', 'com']

    print(re.split("d", "asdfadsfretrytrhdfbd"))

    print(re.split("[a,d]", "asdfad")) # 先使用a分,再使用d分


    print(re.sub("a..j","m..n","adfjskdhfskjygwiuehfs"))


    obj = re.compile(".com") # 正则表达式
    ret = obj.findall('adfadfadf.comfda')
    print(ret)



    str_1 = r"adjkladfhiasasueyti@ksjdf493572.comadsfadfacomrtwtrw"
    a = re.match("com", str_1) # 从字符串起始位置匹配。 找不到,返回None 匹配一次
    print(a)
    # None
    b = re.search("com", str_1) # re.search匹配整个字符串,直到找到一个匹配
    # 找不到,返回None  匹配一次
    print(b)
    # <re.Match object; span=(33, 36), match='com'>

    c = re.findall("com", str_1) # 字符串中找到正则表达式所匹配的所有子串,
    # 并返回一个列表,如果没有找到匹配的,则返回空列表
    print(c)
    # ['com', 'com']

    d = re.findall("\\", str_1) # re模块中 特殊字符,需要使用转义字符
    # python 解释器解释, 为特殊字符,需要使用转义字符进行转义
    print(d)
    # ['\']
    e = re.search(r"\", str_1) # r 表示后面的字符为python中的原生字符
    print(e)
    # <re.Match object; span=(14, 15), match='\'>

    f = re.search(r"com", str_1) # 在python中指退格
    # 在re模块中指单词的边界,所以使用r
    print(f)
    # <re.Match object; span=(33, 36), match='com'>

    # () 做分组
    print(re.search("(as)+", str_1))
    # <re.Match object; span=(10, 14), match='asas'>
    print(re.search("(as)+", str_1).group()) # 贪婪匹配
    # asas

    str_2 = "asdfaas3"
    print(re.search("(as)|3", "asdd893").group()) # | 或
    # as
    print(re.search("(as)|3", "afsdd893").group())
    # 3
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group())
    # 234/yui
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group("id"))
    # 234
    print(re.search("(?P<id>d{3})/(?P<name>w{3})", "ieuriwruiw234/yui").group("name"))
    # yui
  • 相关阅读:
    博客园设置自定义页面[布局][样式]
    linux的hostname文件目录
    mybatis底层源码分析之--配置文件读取和解析
    Enum的使用
    easyUI datagrid笔记
    软工实践第二次作业-黄紫仪
    软工实践第一次作业-黄紫仪
    第五次作业--原型设计
    作业三
    作业二
  • 原文地址:https://www.cnblogs.com/coxiseed/p/11683260.html
Copyright © 2011-2022 走看看