• Re模块的方法补充


    id_str = input("输入一个身份证号:")
    import re
    
    obj = re.compile(r"^([1-9]d{16}[0-9x]|[1-9]d{14})$")  # 将正则表达式编译成为一个 正则表达式对象
    ret = obj.match(id_str)
    if ret:
        print("输入的身份证合法", ret.group())
    else:
        print("输入不合法")
    import re
    
    ret = 'eva3egon4yuan4'.replace('4', 'H')
    print(ret)  # eva3egonHyuanH
    
    ret = re.sub(r'd', 'H', 'eva3egon4yuan4')  # 将数字替换成'H',全部替换
    print(ret)  # evaHegonHyuanH
    ret = re.sub(r'd', 'H', 'eva3egon4yuan4', 1)  # 将数字替换成'H',参数1 表示只替换1个
    print(ret)  # evaHegon4yuan4
    ret = re.subn(r'd', 'H', 'eva3egon4yuan4')  # 将数字替换成'H',返回元组(替换的结果,替换了多少次)
    print(ret)  #('evaHegonHyuanH', 3)
    ret = re.findall(r"[d|.]+", "2020-10-10 11:12:40.237")
    print(ret)  # ['2020', '10', '10', '11', '12', '40.237']
    
    
    ret = re.sub(r'.d+', '', "40.23723")
    print(ret)  # 40
    import re
    s = "  ABC  hello Bye  "
    obj = re.compile(r's+')  # 任意多个空格
    s1 = re.sub(obj, '', s)  # 将符合规则的字符串 替换为空字符''
    print(s1)
    import re
    
    ret = re.split(r"d+", "eva3egon4yuan")
    print(ret)  # 结果 : ['eva', 'egon', 'yuan']
    
    ret = re.split(r"(d+)", "eva3egon4yuan")
    print(ret)  # 结果 : ['eva', '3', 'egon', '4', 'yuan']
    
    ret = re.split('[ab]', 'abcd')  # 先按'a'分割得到''和'bcd',再对''和'bcd'分别按'b'分割
    print(ret)  # ['', '', 'cd']
    import re
    
    # ()是分组     ?:是取消了分组的优先权限
    ret = re.findall(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789') 
    print(ret) # ['www.baidu.com', 'www.oldboy.com']

    ret1 = re.search(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
    print(ret1)
    if ret1:
      
    print(ret1.group()) # www.baidu.com

    ret2 = re.match(r'www.(?:baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')
    print(ret2) # None
    if ret2:
      
    print(ret2.group())

    #
    findall会优先把匹配结果组()里的内容返回
    ret = re.findall(r'www.(baidu|oldboy).com', '123www.baidu.com456www.oldboy.com789')

    print(ret) # ['baidu', 'oldboy']
    import re
    
    ret = re.finditer(r'd', 'ds3sy4784a')   # finditer返回一个存放匹配结果的迭代器
    print(ret)  # callable_iterator object  可被调用执行的迭代器对象
        
    
    # 迭代器的三种取值方法 方法1 next() 取到末尾再取则报错
    print(next(ret).group())  #查看第一个结果
    print(next(ret).group())  #查看第二个结果
    print(next(ret).group())  #查看第三个结果
    
    
    # 迭代器的三种取值方法 方法2  for循环取值
    print([i.group() for i in ret])   # 已经被取值取走三个结果  只能查看剩余结果

      3
      4
      7
      ['8', '4']

    import re
    
    ret = re.finditer(r'd', 'ds3sy4784a')   # finditer返回一个存放匹配结果的迭代器
    print(ret)  # callable_iterator object  可被调用执行的迭代器对象
    
    # 迭代器的三种取值方法 方法3 强制类型转换 list()
    for el in list(ret):
        print(el.group())
  • 相关阅读:
    批量拷贝局域网内的文件
    ★★★感谢伤害你的人★★★
    asp 调用子程序不能使用括号 错误解决办法
    喜欢在网上写日志的人是不是都想有朝一日被人看到?
    星语心愿
    执着
    推荐一个.NET(C#)的HTTP辅助类组件restsharp
    如何让DEV跳出的“提示试用版”的对话框不再显示
    Debugging with GDB (3) 退出gdb
    Debugging with GDB (1) 介绍
  • 原文地址:https://www.cnblogs.com/cherry2020/p/12837369.html
Copyright © 2020-2023  润新知