模块,re模块

什么是模块

就是你要和某个东西打交道,而这个东西本身和python没有关系。这个东西本身就存在

python提供了一个功能的集合  专门负责和这个东西打交道

实质就是一组功能的集合 

 

模块的类型

  1.内置模块:不需要自己安装的模块,解释器自带的

  2.第三方模块 : 需要自己安装的模块

  3.自定义模块:我们自己写的模块

 

re模块

在python中使用正则表达式

 

正则表达式

  从大段的文字中找到符合规则的内容

    爬虫 从网页的字符串中获取你想要的数据

    日志分析 提取  2019-5-10  10:----  花的所有钱

      什么是日志:  2019-5-10   09:00:00 楼下早点摊  5.00

  判断某个字符串是否完全符合规则

    表单验证:手机号 QQ号  邮箱   银行卡  身份证号  密码

 

正则表达式  只和字符串打交道

正则表达式的规则 (regex)

规则   字符串    从字符串中找到符合规则的内容

 

字符组:[]  写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的

[a-z]  匹配所有的小写字母  ascii码(97-122)

[0-9]  匹配所有的数字

[A-Z]  匹配所有的大写字母  ascii码(65-90)

[a-zA-Z] 匹配大小写字母

[a-zA-Z0-9] 匹配大小写字母,数字

[a-zA-Z0-9_] 匹配大小写字母,数字,下划线

 

转义符 \w,转义w,让w具有了特殊的意义,在正则表达式中代表 匹配数字字母下滑线

   \\w  前面的第一个转义符转义了第二个转义符,让第二个转义符失去了转义的特殊功能

    恢复成一个普通的\,这样只能匹配上一个普通的\w了

 

元字符 

\w  匹配数字字母下划线 word

\d 匹配数字 digit

\s 匹配所有的空白符  回车/换行符  制表符  空格  space

  匹配换行符   回车 \n

  匹配制表符   tab   \t

  匹配空格   

\W \D \S 和 \w \d \s 取反

  [\s\S],[\d\D],[\w\W]是三组全集,匹配所有字符

\b 表示单词的边界

^ 表示匹配一个字符串的开始

$ 表示匹配一个字符串的结束

. 表示匹配 出换行符之外的所有字符

[] 只要出现在中括号内的内容都可以被匹配

[^] 只要不出现在中括号中的内容都可以被匹配

 a|b  或  符合a规则的或者b规则的都可以被匹配  

    如果a规则是b规则的一部分,且a规则比b规则要苛刻或长,就把a规则写在前面

    将更复杂的或更长的规则写在最前面

 

 ()  分组  表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组 

  

量词

{n}表示,这个量词之前的字符出现n次

{n,} 表示这个量词之前的字符至少出现n次

{n,m} 表示这个量词之前的字符出现n-m次

? 表示匹配量词之前的字符出现 0次  或者 1次  表示可有可无

+  表示匹配量词之前的字符出现1次  或者  多次

*  表示匹配量词之前的字符出现  0次   或者  多次

 

匹配整数  \d+

匹配小数  \d+\.\d+

匹配小数或者整数

  \d+\.\d+|\d+

  \d+(\.\d+)? 

 

字符/元字符    只约束一个字符

字符+量词      约束一个字符连续出现的次数

字符+量词+?   约束一个字符连续出现的最少次数

  ·字符+量词+?+x   约束一个字符连续出现量词范围内的最少次数,遇到x就立即停止

 

正则匹配特点:贪婪匹配  (.* x匹配任意内容最多次,知道最后一个x停止,回溯算法)

它会在允许的范围内取最长的结果

非贪婪模式/惰性匹配:在量词后面加上?

.*?x 匹配任意非换行符字符任意长度  直到遇到x就停止

 

匹配身份证号:{1-9}\d{16}{\dx}|{1-9}\d{14}

       {1-9}\d{14}(\d{2}{\dX})?

 

知识点回顾

元字符:\d \w \s \n \t \b \w \d \s . ^ $ [ ] [^] ( ) |

  放在字符组中的元字符会出现原形()[不能成对出现] . | ? + * - 号在括号中有特殊的意义,需要转义

量词 : + * ? {n} {n,} {n,m}

贪婪匹配/惰性匹配:

  默认是贪婪匹配:回溯算法

  改成惰性匹配:量词

    在范围内  尽量少的匹配

    ? (0-1)尽量少就是匹配0次

转义符:

  在正则中有特殊意义的字符想让它表示它本来的意义,就在这个字符前加上\

  在正则中一些没有特殊意义的字符加上\,可能就变成有特殊意义的字符

 

posted on 2019-05-10 17:02  Little_Raccoon  阅读(307)  评论(0编辑  收藏  举报