正则表达式
数据提取与清洗
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
. | 除了\n和\r的所有字符 |
---|---|
\d | 数字 |
\D | 非数字 |
\w | 字母和下划线 |
\W | 非字母和下划线 |
\s | 空格(包括制表符,换页符) |
[a-z] | 小写英文字符 |
[a-zA-Z0-9] | 大小写英文字母与数字 |
[123] | 数字123 |
[^123] | 不是数字123 |
* | 出现次数>=0 |
+ | 出现次数>=1 |
{n} | 出现次数=n |
{n,m} | 出现次数大于等于n小于等于m |
^,$ | 以开头,以结尾 |
? | 关闭贪婪模式 |
() | 用于获取括号内匹配成功的字符串 |
例如 定义一个密码的正则表达式:
规定: 英文字母开头,可以包括有数字、大小写、下划线、6-16位
password=’^ [a-zA-Z]{1}[a-zA-Z0-9]{5-15}$’
import re
用re模块提取
ret= re.findall([正则表达式],[被提取的字符串])
返回的类型是列表
首先定义一个pattern=‘<div class ="emall">(.*?)<div>’
re.findall(pattern,html)
//html是之前读取的所有的字符串内容
如果有换行符号可以先进行替换,用 re.sub('\n','',html)
用re模块匹配
ret=re.match([正则表达式],[被匹配的字符串])
如果返回成功,返回结果是<class’re.match’>对象
password='^ [a-zA-Z]{1}[a-zA-Z0-9]{5-15}$'
pass1=‘123456’
pass1=‘k123456’
pass1=‘k456’
re.match(password,pass2)`
用re模块替换
ret=re.sub([正则表达式],[替换成的字符串],[被匹配的字符串])