1. 正则表达式(pattern):就是记录文本规则的代码,从头匹配对应的字符串数据
2. 正则表达式匹配单个字符:根据表达式从头匹配对应的字符串数据
#导入模块
import re
# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
# result是pattern返回的实力对象和返回匹配的字符串,都过group函数方法提取数据
# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()
# 1. pattern: 正则表达式
# 2. string:要匹配的字符串
# 3. 返回匹配结果的对象,使用group方法来提取数据
2.1匹配单个字符
. :匹配任意1个字符(除了\n)
[ ]:匹配[]中的任意一个字符
\d :[0-9]表示匹配是0-9的之间的任意一个数据
\D :匹配非数字,即不是数字的任意一个字符
\s : 表示匹配空白字符,即空格,tab键
\S :表示匹配是非空白单个字符
\w : 表示匹配字母,数字,下划线,汉字
\W : 表示匹配不是字母,数字,下划线,汉字(即匹配一些特殊符号)
3. 正则表达式匹配多个字符:修饰前一个字符文本格式
(1) * : 表示匹配前一个字符可能有0个或者多个,------即可有可无
+ :表示匹配前一个字符至少有一个或者多个,----即至少有一个
? : 表示匹配前一个字符可能出现0次或者1次,----即要么有1次,要么有0次
{m}: 表示匹配前一个字符必须要出现m次
{m,n}: 表示匹配前一个字符至少出现m次,至多出现n次
{m, }: 表示匹配前一个字符至少出现m次
4. 正则表达式匹配开头结尾字符:
(1) ^ : 匹配字符串中以什么开头
$ : 匹配字符串中以什么结尾
\b : 匹配单词的开始或结束,也就是单词的分界处,但是\b并不匹配这些单词分隔字符中的任何 一个,它只匹配一个位置
[^x]: 除了以x开头的字符串,都匹配
5. 扩展:
\ : 表示对正则表达式的代码进行转义,识别为普通的字符串
\.: 表示对正则表达式的代码进行转义,让其成为是一个普通点字符串--> . : 因为匹配任意1个字符
6. 匹配分组:也叫子表达式
6.1
| : 匹配左右任意一个表达式,使用分枝条件时,要注意各个条件的顺序匹配分枝条件时,将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了
(ab) : 将括号中的字符作为一个分组--->用group(1)# 获取第一个分组的数据,默认是0获取者整个数据
\num : 引用分组num匹配到字符串,直接将分组里匹配的字符引用
(?p) : 分组起别名
(?p=name) : 引用别名为name分组匹配到的字符串
(?#comment) : 注释,这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
6.2扩展: 获取多个分组,分别获取分组里面的数据
(ab) : 将括号中的字符作为一个分组--->用group(1)# 获取第一个分组的数据,默认是0获取者整个数据
# 0: 表示获取整个数据
print(match_obj.group(0))
# 获取第一个分组数据
print(match_obj.group(1))
# 获取第二个分组数据
print(match_obj.group(2))
7. re的高级使用:根据正则表达式查找对应的数据
(1) search: 只搜索一个对应的数据(匹配搜索对应对应的数据)---re.search(正则表达式,要匹配的字符串)
group()方法提取数据只在,search和martch搜索~匹配数据的时候
(2) findall:返回的是匹配的结果zifuchuan类型列表---re.findall(正则表达式,要匹配的字符串)
(3) sub : 将匹配到的数据进行替换---re.sub(正则表达式,替换的内容,要匹配的字符串)
count:表示替换次数,1:只替换一次 不加count默认替换全部
re.sub("\d+", "200", "阅读数:1 评论数:10", count=1)
(3.1)替换函数可以在原有的数据基础上加上指定的数据
# add是替代内容的函数,通过函数进行修改数据
def add(match_obj):
result = match_obj.group()
value = int(result) + 1
return str(value)
result = re.sub("\d+", add, "阅读数:100")
(4) split:根据正则表达式进行分割数据---re.split(正则表达式,要匹配的字符串,maxsplit=0)
maxsplit:最大分割次数,默认最大全部分割
8. re的高级使用总结
match:匹配对应的字符串,返回匹配对象和字符串,前后对应(pattern,string)
search:只搜索匹配一个对应的数据(匹配对应的pattern)
findall:直接返回匹配到的数据(匹配所有的pattern)
sub:将匹配到的数据进行替换(匹配对应的pattern,进行替换)可以传参数替换次数或替换add函数
正则表达式30分钟
http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
网友评论