• 正则表达式


    正则表达式

    • 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。

    • 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。

    Python中处理正则表达式:

    import re
    
    # 单字符的表示规则
    # ----------------findall方法 - -----------------
    # .:表示除
    外的任何一个字符
    re1 = r'.'
    res1 = re.findall(re1, 'hjbgaihu15964156sdhugiosdhg')
    print(res1)
    
    # []:举例一个字符
    re2 = r'[abc]'
    res2 = re.findall(re2, 'abihaubhoisshfu84sd48sd4b')
    print(res2)
    
    # d:表示一个数字
    re3 = r'd'
    res3 = re.findall(re3, 'dsad41sags4g7sa4gs4g5s4gdg')
    print(res3)
    
    # D:表示一个非数字
    re4 = r'D'
    res4 = re.findall(re4, 'sdad45s5agasgihuh#$4')
    print(res4)
    
    # s:表示一个空白键
    re5 = r's'
    res5 = re.findall(re5, 'iaj ioad nj54   dsa575')
    print(res5)
    
    # S:表示非空白键
    re6 = r'S'
    res6 = re.findall(re6, 'dsa 46sd s54ad4ds5a')
    print(res6)
    
    # w:表示一个单词(单词组成:数字,字母,下划线)字符
    re7 = r'w'
    res7 = re.findall(re7, 'nsa@$$% 65846 SOAHH,//"')
    print(res7)
    
    # W:表示一个非单词字符(不是数字,字母,下划线)
    re8 = r'W'
    res8 = re.findall(re8, '#%^fdsaf5445,.?":')
    print(res8)
    
    # 二:多个字符的匹配规则
    
    re21 = r'abc'
    res21 = re.findall(re21, 'hjbgfkaabc5684564abcigjfkahsug')
    print(res21)
    
    # |:同时定义多个规则
    re22 = r'13355|15555'
    res22 = re.findall(re22, 'sd1335598das15555dsaga879856')
    print(res22)
    
    # 匹配手机号11位
    # {m}:表示匹配一个字符m次
    re23 = r'1[3456879]d{9}'  # 匹配1开头,第二位数字是3-9,最后是9位数字的字符
    res23 = re.findall(re23, 'sda1351256165151dsagag14548451515411gag451445444658454')
    print(res23)
    
    # {m,}:表示匹配一个字符至少m次
    re24 = r'd{7,}'
    res24 = re.findall(re24, 'andhuiaf5461513das5s161a65g1a5s61g56as16515616516')
    print(res24)
    
    # {m,n}:表示匹配一个字符出现m次到n次
    # 默认开启贪婪模式:如果给定一个范围,它会尽可能的去匹配更多的
    re25 = r'd{3,5}'
    res25 = re.findall(re25, 'aaaaa123456ghj333yyy77iii88jj909768876')
    print(res25)
    
    # 关闭贪婪模式:在给定的范围后面加个问号(变成非贪婪模式,尽可能匹配最少的)
    re26 = r'd{3,5}?'
    res26 = re.findall(re26, 'aaaaa123456ghj333yyy77iii88jj909768876')
    print(res26)
    
    # *:表示前一个字符出现0次以上(包括0次)
    re27 = r'd*'
    res27 = re.findall(re27, '343aa1112df345g1h6699')
    print(res27)
    
    # +:表示前一个字符出现1次以上,(包括1次)
    re28 = r'd+'
    res28 = re.findall(re28, '343aa1112df345g1h6699')
    print(res28)
    
    # ?:表示0次或者1次
    re29 = r'd?'
    res29 = re.findall(re29, '343aa1112df345g1h6699')
    print(res29)
    
    # 三:边界匹配
    # ^:匹配字符串的开头
    re31 = r'^python'
    res31 = re.findall(re31, 'python66624python')
    print(res31)
    
    # $:匹配字符串的结尾
    re32 = r'python$'
    res32 = re.findall(re32, 'python66624python')
    print(res32)
    
    # :匹配字符串的边界
    re33 = r'python'
    res33 = re.findall(re33, 'python66624python')
    print(res33)
    
    # B:匹配字符串的非边界
    re34 = r'Bpython'
    res34 = re.findall(re34, 'python66624python')
    print(res34)
    
    # ():匹配分组:在匹配的数据中提取数据
    re35 = r'aa(d{3})bb'
    res35 = re.findall(re35, 'gg21111h2222hj333klg444hj555klghjkaa123bbhhjhjjaa345bb')
    print(res35)
    
    re36 = r"aa(d{2,})bb(d{2,})cc"
    res36 = re.findall(re36, "aa123bb345cc7890ghjkl78aa22bb33cc")
    print(res36)
    
    # ------------------------search方法 - ------------------------------
    # search: 查找第一个符合规范的字符串,返回出来的是一个匹配对象
    s = '123abc123aaa123bbb888ccc'
    res41 = re.search(r'123', s)
    # 通过group能够将找到的数据提取出来
    print(res41.group())
    
    # 如果没有找到符合规范数据,返回的就是一个None
    re3 = re.search(r"345", s)
    print(re3)
    
    re4 = r"aaa(d{3})bbb(d{3})ccc"
    res4 = re.search(re4, s)
    print(res4)
    # 使用search,按规则查找,提取分组的数据:使用group方法,
    # group不传参数:获取的是匹配到的所有内容
    # group可以通过参数来指定,获取第几个分组中的内容(获取第一个分组,传入参数1,获取第二个分组,传入参数2。。。。。。。)
    
    print(res4.group(1))
    print(res4.group(2))
    
    # ----------------------match------------
    
    s = "a123abc123aaa123bbb888ccc"
    
    # match:字符串的开头位置进行匹配,找到符合规范的,返回出来的是一个匹配对象
    # 如果开头的位置不符合规范,那么不会忘后面去找,直接返回的是None
    res1 = re.match(r"a123abc", s)
    print(res1)
    
    # -------------替换-----------------------
    s = "a123abc123aaa123bbb888ccc"
    # """
    # 第一个参数:待替换的字符串
    # 第二个参数:目标字符串
    # 第三个参数:要进行替换操作的字符串
    # 第四个参数:可以指定最多替换的次数,非必填(默认替换所有符合规范的字符串)
    #
    # """
    res5 = re.sub(r'123', "666", s, 4)
    print(res5)
    
  • 相关阅读:
    PetaLinux 生成 Zynq 操作系统
    单片机、微控制器和微处理器有什么区别
    嵌入式基础概念系列(1) —— GPIO
    学中杂记
    Spring学习笔记
    jdbc一点小笔记
    JSP学习
    Servlet学习的一些笔记
    接触Struts2的ModelDriven<>接口
    android-dialog的位置
  • 原文地址:https://www.cnblogs.com/zhouxiongjie/p/13182205.html
Copyright © 2020-2023  润新知