• 正则-- | 匹配分组


    # ### 正则表达式
    import re
    """
    # 1.正常分组 ()
    1) 正常情况下用()圆括号进行分组 可以用1 反向引用第一个圆括号匹配的内容。
    2) (?:正则表达式) 表示取消优先显示的功能
    
    
    (正则表达式)    代表分组 findall 把所有分组的内容显示到列表里
    (?:正则表达式)  代表分组 findall 把所有分组的内容不显示到列表里
    """
    print(re.findall('.*?_good','wusir_good alex_good 神秘男孩_good'))
    #['wusir_good', ' alex_good', ' 神秘男孩_good']
    print(re.findall('(.*?)_good','wusir_good alex_good 神秘男孩_good'))
    #['wusir', ' alex', ' secret男']
    print(re.findall('(?:.*?)_good','wusir_good alex_good 神秘男孩_good'))
    
    # | 代表或 
    # 既想匹配abc 还要匹配abcd 
    lst = re.findall("abc|abcd","abc234abcd234")
    print(lst) # 有缺陷,不能够都匹配到
    #任意 把字符串长的写在前面,字符串短的写在后面
    lst = re.findall("abcd|abc","abc234abcd234")
    print(lst)
    
    # 匹配小数 
    '''
    用让原本有意义的字符变得无意义. 
    . 代表任意字符(除了
    ) 
    如果想要让正则匹配一个.
    用. 让点的意思失效.
    '''
    # 3.14 34. .2342 234. . 2344.234
    lst = re.findall("d+.d+","3.14 34. .2342 234. . 2344.234")
    print(lst)
    # 匹配小数和整数
    lst = re.findall("d+.d+|d+","3.14 34. .2342 234. . 2344.234 343 sdfsdf ")
    print(lst)
    print("------112221------")
    # 使用分组的形式来匹配小数和整数
    lst = re.findall("d+(.d+)?","3.14 34. .2342 234. . 2344.234 343 sdfsdf ")
    print(lst)
    print("------111------")
    lst = re.findall("d+(?:.d+)?","3.14 34. .2342 234. . 2344.234 343 sdfsdf ")
    print(lst)
    
    # 匹配135或171的手机号 
    lst = re.findall("135|^171d{8}","171skdjfksjkf 11312312317178787887")
    print(lst)
    print("------------")
    lst = re.findall("135|171[0-9]{8}","171skdjfksjkf 17178787887")
    print(lst)
    
    # ### search   通过正则匹配出第一个对象返回,通过group取出对象中的值 
    """
    findall  把满足条件的所有值都找出来放到列表里面返回
    search   找到一个满足条件的值就直接返回,扔到一个对象当中
    想要获取对象中的值,用group 对象.group()
    """
    obj = re.search("d+","jsdfusudf8989sdfsdf89")
    print(obj)
    res = obj.group()
    print(res)
    
    
    # 匹配www.baidu.com 或者 www.oldboy.com
    obj = re.search("(www).(baidu|oldboy).(com)","www.baidu.com www.oldboy.com")
    res = obj.group()
    print(res)
    # 数字1 代表拿第一个小括号里面的内容
    res = obj.group(1)
    print(res)
    # 数字2 代表拿第一个小括号里面的内容
    res = obj.group(2)
    print(res)
    # 数字3 代表拿第一个小括号里面的内容
    res = obj.group(3)
    print(res)
    
    # groups 一次性把所有小括号里面的内容匹配出来
    res = obj.groups()
    print(res)
    
    
    
    # "5*6-7/3" 匹配 5*6 或者 7/3
    strvar = "5*6-7/3"
    obj = re.search("d+[*/]d+",strvar)
    res = obj.group()
    print(res)
    
    lst = re.findall("d+[*/]d+",strvar)
    print(lst)
    

      

  • 相关阅读:
    HttpClient学习整理
    编写更少量的代码:使用apache commons工具类库
    Java多线程:Callable,Future,FutureTask
    多线程下HashMap的死循环问题
    选择排序算法---直接选择排序和堆排序
    Java多线程:ThreadLocal
    插入排序算法---插入排序与希尔排序
    数据库MySQL与Oracle的一些去O注意项
    交换排序算法---冒泡排序与快速排序
    ImageMagick常用指令详解
  • 原文地址:https://www.cnblogs.com/huangjiangyong/p/10924367.html
Copyright © 2020-2023  润新知