正则表达式
一.模块的定义
一组功能的集合(要和某个本身就存在的东西打交道,,而这个东西本身和python没有关系,
python提供了一个功能的集合,专门负责和这个东西打交道)
模块的类型:
内置模块:不需要我们自己安装的,解释器自带的
第三方模块:需要我们自己安装的模块
自定义模块:自己写的模块
例
import os #这里的os就是一个模块,用来操作文件,文件这个东西就是本身就存在的,
且文件本身与python没有关系,os模块就是和文件打交道的
os.remove() #模块中的方法
os.rename()
二.re模块:为了在python中使用正则表达式
正则表达式是一种独立的规则,独立的语言
引用正则表达式主要为了完成两件事:
1.把一个文件中的所有手机号码都找出来 从大段的文字中找到符合规则的内容 如:爬虫,日志分析
2.输入手机号 判断这个字符串是否完全符合规则 如:表单验证,手机号,QQ号,邮箱,银行卡,身份证号码,密码
三.正则表达式的规则
正则表达式(只和字符串打交道,从字符串中找到符合规则的内容)
在线测试工具:http://tool.chinaz.com/regex/
- 字符组:[]写在中括号中的内容,如[0-9]中的任意一个出现在某一个字符的位置上都是符合规则的
字符组 正则 带匹配字符 匹配结果 解释说明 [0-9] zrtygh546481fttr 5 4 6 4 8 1 匹配所有的数字 [a-z] zrtygh546481fttr z r t y g h f t t r 匹配所有的小写字母 [A-Z] ASFR几乎hiu56 A S F R 匹配所有的大写字母 [a-zA-Z] ASFR几乎hiu56 A S F R h i u 匹配所有的大小写字母
(一定要根据ascii码的顺序来选择a-z和A-Z的顺序)
[a-zA-Z0-9] ASFR几乎hiu56 A S F R h i u 5 6 匹配大小写字母和数字
(a-z和A-Z的顺序不可以换0-9是可以在任意位置的)
[a-zA-Z0-9_] ASFR几乎hiu56 A S F R h i u 5 6 _ 匹配数字字母下划线
a-z的ascii码是65-90
A-Z的ascii码是97-122
元字符:
元字符 | 匹配内容 | 解释 |
\w | 匹配所有的数字字母下划线 | w是Word开头相当于[a-zA-Z0-9_] |
\d | 匹配所有的数字 | d是digit的开头,相当于[0-9] |
\s | 匹配所有的空格,回车,制表符 | s是space的开头,相当于[\n\t ] |
\n | 匹配换行符(回车) | |
\t | 匹配制表符(tab) | |
匹配空格 | ||
\W | 与\s取反,匹配除数字字母下划线外的所有 | |
\D | 与\d取反,匹配除数字外的其他所有 | |
\S | 与\s取反,取除空格外的所有 | |
[\s\S][\d\D][\w\W] |
表示全集,匹配所有字符 | |
\b |
表示单词的边界 | |
^ | 匹配一个字符串的开始 | |
$ | 匹配一个字符串的结束 | 对^$前后换行也支持,选中此项,每一行的开始和结束都有一个开始和结束字符,否则只有整个文本的开头和结束有 |
. | 表示匹配除换行之外的所有字符 | |
[] | 只要出现在中括号内的内容都可以被匹配 | [ab]----单个a和单个b都可以被匹配 |
[^] | 只要不出现在中括号中的内容都可以被匹配 | 单个出现也不会被匹配 |
a|b | 或,符合a规则的符合b规则的都可以被匹配 | 如果a规则是b规则的一部分,或a规则比b规则要苛刻,就要把a规则写在前面,默认先看前面 |
() | 分组 | 表示想给几个字符串量词约束的时候,需要把这些量词分在一个组 |
量词:
量词 | 用法说明 |
{n} | 表示这个量词之前的字符出现n次 |
{n,} | 表示这个量词之前的字符至少出现n次 |
{n,m} | 表示这个量词之前的字符出现n-m次 |
? | 表示匹配量词之前的字符出现0次或1次 |
+ | 表示匹配量词之前的字符出现1次或多次 |
* | 表示匹配量词之前的字符出现0次或多次 |
正则表达式的匹配特点:贪婪匹配(它会在允许的范围内取最长的结果)
非贪婪模式/惰性匹配:在量词后面加上?
如: .*?x
改变世界,改变自己!