正则表达式

来源:互联网 发布:java如何实现分布式 编辑:程序博客网 时间:2024/06/15 23:39

什么是正则表达式?

正则表达式是一种用特殊的字符串制定的规则,通过制定好的规则,可以在所有字符串中查找自己想要的数据,对数据进行筛选和过滤。

正则表达式用法?

1)依次拿出来表达式和文本进行对比

2)判断表达式和文本是否完全匹配成功,如果匹配成功,说明找到和规则相同的字符串,如果一个字符串不匹配,就匹配失败

用法:

1)使用内置库re模块,进行正则匹配

2)构造正则表达式

3)利用正则函数进行匹配

正则表达式的常用语法:


在这里介绍4中最常用的正则函数:
1)match()函数:
从字符串的开始位置开始匹配,如果匹配到对应的正则表达式的数据,就说明匹配成功,返回匹配到的数据;如果不是以正则表达式开头的,匹配失败,匹配到第一个符合正则表达式条件的。

参数有两个(正则表达式,进行匹配到的分组信息)

import repattern = 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 sysreload(sys)sys.setdefaultencoding("utf-8")import rephone = "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 "是手机", resultelse:    print "不是手机"print result
2)匹配邮箱

# -*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding("utf-8")import reemail = "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 sysreload(sys)sys.setdefaultencoding("utf-8")import rebad_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个以上
$ 以 结尾

 欢迎大家多提意见哦

原创粉丝点击