zoukankan      html  css  js  c++  java
  • re的总结

    re正则表达式分为六个大类

     https://www.cnblogs.com/edwardsun/p/4421773.html

    1,单个字符的匹配

    使用的是re.findallI() 这个函数进行匹配,这个函数有三个参数 

    第一个参数是 :匹配什么样的单个字符

    第二个参数是: 匹配的目标字符串

    第三个参数是: flags = re.I 它的意思是区不区分大小写,如果有这个参数就区分大小写,没有就不区分

    print(re.findall(r'a', 'abcA,123嘿嘿abcABC', flags=re.I)) 

    https://www.runoob.com/python/python-reg-expressions.html

    这个网站有很多的单个字符匹配的方法入 d,w,s...等

    2,多个字符符的匹配

    print(re.findall(r'a{2}', 'aaabbb'))  # ['a', 'a', 'a']

    像这种就是多个字符的匹配

    其中有几种写法

     1,ab{n,}代表的是n个b到无数个b这这种的形式

     2,ab{,n} 这个表示的是从0个b到第n个b  (还需要注意的是优先考虑的是 b到n个的b,这样依次的考虑,直到只剩下a,在考虑a)

    3, ab{a,b}这个表示的是从a个b到b个b这种形式  (着里和上面是一样的需要注意的是优先考虑的是 b到b个的b,这样依次的考虑,直到只剩下a,在考虑a)

    还有就是特殊符号的重复

     1,*号代表的是0个到n个的意思

    print(re.findall(r'ab*', 'aababbabbbabbbb')) 

     2.+ 号是代表的是匹配的是至少是一个的,然后到n个

    print(re.findall(r'ab+', 'aababbabbbabbbb'))

     3,?: 代表的是匹配到的是0 个到1 个的

    print(re.findall(r'ab?', 'aababbabbbabbbb'))

    多行字符的匹配

    import re
    s = """http://www.baidu.com
    https://sina.com.cn
    https://youku.com
    haam
    abchttp://www.oldboy.com
    """
    # ^代表以什么开头,$代表以什么结尾,必须结合flags=re.M来完成多行匹配
    print(re.findall(r'^http.+com$', s, re.M))  # ['http://www.baidu.com', 'https://youku.com']

    分组匹配多行字符 :() 就是一个一个的分组

    专门处理分组的方法:分组,分组编号,有名分组,取消分组
    取消分组: 必须写(),但是()为分组语法,我们只是想通过()将一些数据作为整体,所以()必须,再取消分组即可
    (?:) 取消分组只是作为整体 (?P<名字>) 有名分组

    # (?:) 取消分组只是作为整体   (?P<名字>) 有名分组
    url = 'www.baidu.com,www.youku.com'
    res = re.match(r'((?:www).(?P<name>[a-z]+).com)', url)
    # print(res)  # <_sre.SRE_Match object; span=(0, 13), match='www.baidu.com'>
    print(res.group(1))  # www.baidu.com
    print(res.group(2))  # baidu
    print(res.group('name'))  # baidu

    拆分与替换

    import re
    
    s = 'a b ac def'
    print(s.split(' '))  # ['a', 'b', 'ac', 'def']
    
    # 正则拆分
    s = 'a b,ac@def'
    print(re.split(r'[ ,@]', s))  # ['a', 'b', 'ac', 'def']
    
    
    s = 'python abc python'
    print(re.sub('python', 'Python', s))  # Python abc Python
    print(re.sub('python', 'Python', s, count=1))  # Python abc python
    
    
    # 结合分组可以完成信息的重组与替换
    s = 'day a good!!!'  # 'a good good day'
    print(re.sub('(day) (a) (good)', r'today is 2 3 3 1', s))
  • 相关阅读:
    宝塔面板的数据库使用
    Spring MVC入门
    从分式第n项到线性递推——bostan-mori 算法的扩展应用
    计算几何专题训练
    博客整理
    wpf ScrollViewer自动滚到最上
    word2Vec笔记2021
    好用工具备份
    Samtools pick up seq
    Ryzen核显需要扩大显存吗?
  • 原文地址:https://www.cnblogs.com/WBaiC1/p/10842596.html
Copyright © 2011-2022 走看看