zoukankan      html  css  js  c++  java
  • python中的re模块-使用正则表达式

    """
    re模块各方法区别
    search:若string中包含pattern子串,则返回Match对象,否则返回None,注意,如果string中存在多个pattern子串,只返回第一个
    findall:返回string中所有与pattern相匹配的全部字串,返回形式为数组。
    finditer:返回string中所有与pattern相匹配的全部字串,返回形式为迭代器。
    """
    
    
    import re
    # 需要匹配的字符串
    string = '12abc45'
    result = re.search(pattern='abc', string=string)
    print(result)
    # 获取匹配到的子字符串
    print(result.group())
    result = re.search(pattern='2a', string=string)
    print(result)
    
    
    # .: 匹配任意字符,
     除外
    result = re.search(pattern='.', string=string)
    print(result)
    
    # [7a] 匹配7或者a
    string = '127bc45'
    result = re.search(pattern='[7a]', string=string)
    print(result)
    
    string = 'cccc'
    result = re.search(pattern='d', string=string)
    print(result)
    
    # *: 匹配某个字符零次->无限次
    string = 'a7abc45'
    result = re.search(pattern='a*', string=string)
    print(result)
    
    
    # *: 匹配某个字符零次->无限次
    # 贪婪模式 vs 非贪婪模式
    # Python使用正则表达式:贪婪模式。
    string = 'a7abc45'
    result = re.search(pattern='.*', string=string)
    print(result)
    
    # 启用非贪婪模式?
    string = 'a7abc45'
    result = re.search(pattern='.*?', string=string)
    print(result)

    使用例子:

    # 需要匹配 #mobile_phone# #pwd#
    
    string = '{"member_id":"#pwd#","amount":#money#}'
    import re
    # result = re.search('#.*?#', string)
    # print(result)
    
    # 分组
    result = re.search('#(.*?)#', string)
    print(result)
    
    # result.group() 正则表达式匹配到的整个结果
    print(result.group(0))  #  #pwd#
    # result.group(1) :结果当中第一个括号里面的内容,
    # result.group(2), 第二个括号里面的内容
    print(result.group(1))

    封装示例:

    string = '{"member_id":"#pwd#","amount":#money#}'
    
    
    class Data:
        pwd = '123456'
        money = 100
    
    # 方法一:if
    
    # 方法二: 正则表达式 re.search, re.finditer
    
    
    import re
    
    result = re.finditer('#(.*?)#', string)
    for el in result:
        # el 匹配到的每个数据
        # print(el.group())
        # print(el.group(1)) # pwd
        # 字符串替换, replace
        old = el.group()  # #pwd#
        prop_name = el.group(1)  # pwd
        string = string.replace(old,  str(getattr(Data, prop_name)) )
    
    print(string)
    
    # 1, getattr()
    # 2, re.finditer()
    # 3, .*?
    # 4, group(), group(1)
  • 相关阅读:
    蓝桥杯-最大子阵
    蓝桥杯-四平方和问题
    蓝桥杯-生日蜡烛
    蓝桥杯-三羊献瑞
    蓝桥杯-李白喝酒
    使用SSH远程管理时本地文件被修改了
    Total Commander基本配置及使用(整理)
    Linux下自己和自己用各种方法进行文件的上传下载
    idea搭建springcloud微服务框架
    将tomcat注册成服务(windows)、linux安装svn、docker、nginx、zipkin以及rabbitMQ教程
  • 原文地址:https://www.cnblogs.com/wsfsd/p/15502499.html
Copyright © 2011-2022 走看看