什么是正则表达式?
正则表达式是一种用特殊的字符串制定的规则,通过制定好的规则,可以在所有字符串中查找自己想要的数据,对数据进行筛选和过滤。
正则表达式用法?
1)依次拿出来表达式和文本进行对比
2)判断表达式和文本是否完全匹配成功,如果匹配成功,说明找到和规则相同的字符串,如果一个字符串不匹配,就匹配失败
用法:
1)使用内置库re模块,进行正则匹配
2)构造正则表达式
3)利用正则函数进行匹配
正则表达式的常用语法:
在这里介绍4中最常用的正则函数:
1)match()函数:
从字符串的开始位置开始匹配,如果匹配到对应的正则表达式的数据,就说明匹配成功,返回匹配到的数据;如果不是以正则表达式开头的,匹配失败,匹配到第一个符合正则表达式条件的。
参数有两个(正则表达式,进行匹配到的分组信息)
import re
pattern = re.compile(r'hello', re.I) #r 原样字符串, re.I匹配全拼不区分大小写
string = 'Hello, word'
result = re.match(pattern, string)
if result:
# .group()获取匹配到的分组信息
print result.group()
else:
print '匹配失败'
2)search()函数:
从大的字符串中匹配符合正则的字符串,无论字符串在什么位置,只要有就返回找到的内容,如果没有匹配到就返回None
3)findall()函数
返回一个列表,列表中存放的是所有符合正则表达式的字符串
4)sub()函数
替换符合正则表达式的字符:参数1:正则表达式
参数2:替换后的内容
参数3:要进行替换的内容
下面是正则的几个练习:
1)正则匹配手机号:
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
phone = "13545678912"
pattern = re.compile("^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$")
result = pattern.match(phone)
if result:
print "是手机", result
else:
print "不是手机"
print result
2)匹配邮箱
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
email = "123@qq.anc.com"
pattern = re.compile("([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+")
result = pattern.match(email)
if result:
print "是邮箱"
else:
print "不是邮箱"
print result
3)屏蔽关键字
# -*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
import re
bad_words = [
("毛\s*小\s*明", "毛*明"),
("张小涛", "张*涛"),
("宋小美", "宋*美"),
]
content = "毛 小 明辅导张小涛的兄弟宋小美学习Python"
for bad_word in bad_words:
pattern = re.compile(bad_word[0])
content = pattern.sub(bad_word[1], content)
print content
常用的正则:
+匹配字符一个或一个以上
\d匹配整数
{10}匹配10次
{1,5}至少匹配1次,至多匹配 5次
| 条件,表示或
() 多个条件用()
^ 以***开头
sub:正则替换内容
\s 匹配空格,tab键....
*表示0个或0个以上
$ 以 结尾
欢迎大家多提意见哦