day16

1. 什么是模块

你要和某个东西打交道,而这个东西本身和python没有关系,这个东西本身就存在pyhton提供了一个功能的集合(模块), 专门负责和这和东西打交道

模块实际上就是给我们提供功能这个要操作的内容本来就存在,模块只不过是python提供给我们去操作这个内容的方法

模块: 一组功能的集合模块的类型:    (1).内置模块: 不需要我们自己安装的,解释器自带的    (2).第三方模块: 需要我们自己安装的模块    (3).自定义模块: 需要我们自己写的

2. 正则表达式

2.1 正则表达式简介

    (1) 正则表达式是是一种独立的规则,独立的语言.
       正则表达式 只能和字符串打交道

    (2)正则表达式的规则:
        规则  字符串   从字符串中找到符合规则的内存

    (3)正则表达式能干什么?
        # 1.从大段的文字中找到符合规则的内容(对正则要求较高)
            # 1>爬虫 从网页的字符串中获取你想要的的数据
            # 2>日志分析 提取 2018-8-12 10:---- 花的所有钱
                  # 什么是日志:
                     # 2018-8-12 10:00:00 楼下早点摊 3.00

        # 2.判断某个字符串是否完全符合规则(对正则要求较低)
            # 表单验证: 手机号 QQ号码 邮箱 银行卡 身份证号 密码
2.2 正则表达式基础
  
  普通字符就表示一个正常的字符
  元字符表示它的特殊意义,如果转义元字符,那么这个元字符就失去了特殊意义
# 字符组: [] 写在中括号中的内容,都可以出现在下面的某一个字符的位置上(都是符合规则的) # [0-9] 匹配数字 # [a-z] 匹配小写字母 # [A-Z] 匹配大写字母 # [8-9] [a-f] 顺序必须从前往后 # [A-z] (65-122) 其中91-96是杂质 所以可以写成[a-zA-Z] # [a-zA-Z] 匹配大小写字母 # [a-zA-Z0-9] 匹配大小写字母,数字 # [a-zA-Z0-9_] 匹配数字,字母,下划线 # ascii码表 # 65 - 90[A-Z] 所有的大写字母(占的ascii码位) # 97 - 122[a-z] 所有的小写字母 # 转义符 #
2.3 元字符

    # 元字符
    # w  匹配数字字母下划线 word关键字 [a-zA-Z0-9_]
    # d  匹配所有的数字  digit  [0-9]
    # s  匹配所有的空白符: 回车(换行符),制表符,空格  space  [
	 ]
        # 匹配换行符 回车 

        # 匹配制表符 tab  	
        # 匹配空格 空格(普通字符)
    # W D S 和w d s取反
        # w  匹配非数字字母下划线
        # d  匹配非数字
        # s  匹配非空白符: 回车(换行符),制表符,空格
        # [sS] [dD] [wW] 是三组全集 意思是匹配所有字符
    #  表示单词的边界(开始和结尾)
        # xx  匹配单词开头
        # xx  匹配单词结尾
    
    # 和转义字符相关的 元字符
    # w d s(
	)  W D S
    
    # ^ $
    # ^ 匹配字符串的开头 ^xx
    # $ 匹配字符串的结尾 xx$
    # 一起使用: 判断某个字符串是否完全符合规则
    
    # . 表示匹配 除换行符之外的所有字符
    
    # [] 只要出现在中括号内的内容都可以被匹配
    # [^] 只要不出现在中括号中的内容都可以被匹配
        # 有一些特殊意义的原字符进入字符组中会恢复它本来的意义(现原形): . | [] ()
    
    # a|b 或  符合a规则的或者b规则的都可以被匹配
        # 如果a规则是b规则的一部分,切a规则比b规则要苛刻|长,就把a规则写在前面
        # 将更复杂或更长的规则写在最前面
    
    # () 分组 表示给几个字符加上量词约束的时候,就给这些量词分在一个组
2.4 量词

    # 量词(永远是约束元字符的)
    # {n}表示 这个量词之前的字符出现n次
    # {n,}表示 这个量词之前的字符至少出现n次
    # {n,m}表示 这个量词之前的字符出现n~m次
    # ? 表示匹配量词之前的字符出现 0次 或者 1次 表示某一位可有可无的时候
    # + 表示匹配量词之前的字符出现 1次 或者 多次
    # * 表示匹配量词之前的字符出现 0次 或者多次

  练习题:
    (1)匹配整数 d+
    (2)匹配小数 d+.d+
    (3)匹配小数或者整数
      d+.d+|d+
      d+(.d+)? (有.就有后面的小数,他们同时出现或者同时不出现)
    (4)匹配身份证: [1-9]d{16}[dx]|[1-9]d{14}
     [1-9]d{14}(d{2}[dx])?
2.6 贪婪匹配和惰性匹配

    # 正则表达式的匹配特点: 贪婪匹配
    # 它会在允许的范围内取最长的结果
    
    # 非贪婪匹配(惰性匹配): 在量词后面加上?
    # .*?x  匹配任意非换行符字符 任意长度 直到遇到x就停止
2.7 几个字符的组合关系:

  # 字符/元字符  只约束一个字符
  # 字符+量词    约束一个字符连续出现的次数
  # 字符+量词+?  约束一个字符出现的最少次数
      # 字符+量词+?+x  约束一个字符连续出现量词范围内的最少次数,遇到x就立即停止
  注意: 关于字符串挪到pyhton中的转移问题: 只需要在工具中测试完毕,确认可以匹配上之后,挪到python中在字符串的外面加上r,r""即可
原文地址:https://www.cnblogs.com/kangqi452/p/11353946.html