python第一个正则表达式

1. import re : python正则表达式模块
2. 第一个正则表达式
re.compile(r'imooc')
pattern.match('imooc python')
示例:
import re
pa = re.compile(r'imooc') #返回一个Pattern类型对象pa
ma = pa.match('imooc python') #返回一个match对象ma
print ma.group() #获得匹配结果
print ma.span() #获得匹配区间
print ma.string #匹配字符串
print ma.re #pattern对象
 
pa = re.compile(r'imooc', re.I)    # I == ignore,忽略大小写地匹配
ma = pa.match('iMoOc python')
print ma.group()
 
pa = re.compile(r'(imooc)') #加入小括号,放到group里
ma = pa.match('imooc python')
print ma.groups()
 
ma = re.match(r'imooc', 'imooc python') #直接匹配
print ma.group()
 
Python正则表达式语法
字符
匹配
.
匹配任意字符(除了\n)
[...]
匹配字符集
\d / \D
匹配数字/非数字
\s / \S
匹配空白/非空白字符
\w / \W
匹配单词字符[a-zA-Z0-9]/非单词字符
单字符匹配示例:
import re
ma = re.match(r'.', 'abc0')
print ma.group()
ma = re.match(r'{[abc]}', '{b}')
print ma.group()
ma = re.match(r'[a-z]', 'a')
print ma.group()
ma = re.match(r'\[[\w]\]', '[a]')
print ma.group()
 
字符
匹配
*
匹配前一个字符0次或无限次
+
匹配前一个字符1次或无限次
?
匹配前一个字符0次或1次
{m} / {m.n}
匹配前一个字符m次到n次
*? / +? / ??
匹配模式变为非贪婪(尽可能少匹配字符)
示例:
# -*- coding: utf-8 -*-
import re
ma = re.match(r'[A-Z][a-z]*', 'Aa')
print ma.group()
ma = re.match(r'[_a-zA-z]+[_\w]*', '_helloWorld01') #匹配一个变量名
print ma.group()
ma = re.match(r'[0-9]?[0-9]', '28') #匹配0到99
print ma.group()
边界匹配
字符
匹配
^
匹配字符串开头
$
匹配字符串结尾
\A / \Z
指定的字符串必须穿现在开头/结尾
示例:
import re
ma = re.match(r'^[\w]{4,10}@163.com$', 'imooc@163.com')
print ma.group()
ma = re.match(r'\Aimooc[\w]*', 'imooc python')
print ma.group()
分组匹配
字符
匹配
|
匹配左右任意一个表达式
(ab)
括号表达式作为一个分组
\<number>
引用编号为num的分组匹配到的字符串
(?P<name>)
分组起一个别名
(?P=name)
引用别名为name的分组匹配字符串
示例:
# -*- coding: utf-8 -*-
import re
ma = re.match(r'[0-9]?\d$|100', '100') #匹配0到100
print ma.group()
ma = re.match(r'[\w]{4,6}@(163|126).com', 'imooc@126.com')
print ma.group()
ma = re.match(r'<([\w]+>)\1', '<book>book>')
print ma.group()
ma = re.match(r'<([\w]+>)[\w]+</\1', '<book>python</book>') #
print ma.group()
ma = re.match(r'<(?P<mark>[\w]+>)[\w]+</(?P=mark)', '<book>python</book>')
print ma.group()
 
re模块的其他方法
1:search(pattern, string, flags=0)
    在一个字符串中查找匹配
2:findall(pattern, string, flags=0)
    找到匹配,返回所有匹配部分的列表
3:sub(pattern, repl, string, count, flags=0)
    将字符串中匹配正则表达式的部分替换为其他值
4:split(pattern, string, maxsplit=0, flags=0)
    根据匹配分割字符串,返回分割字符串组成的列表
示例:
import re
pa = re.compile('<[\w]+>')
ma = re.search(pa, '<a><b><c><d><efg>h<i>')
print ma.group()
pa = re.compile('<[\w]+>')
L = re.findall(pa, '<a><b><c><d><efg>h<i>')
print L
s = re.sub(r'\d+', '2016', 'I was born in 1993')
print s
 
def add1(match):        # repl位函数的sub函数
    val = match.group()
    num = int(val)+1
    return str(num)
s = re.sub(r'\d+', add1, 'I was born in 1993, you are born in 1992')
print s
 
l = re.split(r':| |,', 'imooc:C C++ Java Python,C#')
print l
 
练习
抓取网页中的图片到本地
1:抓取网页
2:抓取图片地址
3:抓取图片内容并把存到本地
 

Python正则表达式 学习笔记的更多相关文章

  1. Python 正则表达式学习笔记

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  2. 7.Python 正则表达式学习笔记

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例.本文的内容不包括如何编写高效的正则表达式.如何优化正则表达式,这些主题请查看其他教程 ...

  3. python 正则表达式 学习笔记(不断补充ing)

    本文参考了以下博客,感谢众位大神的分享! http://www.oschina.net/question/12_9507 和 http://www.crifan.com/python_re_sub_d ...

  4. Python正则表达式学习笔记

    [] 字符类,只要匹配里面的任意字符,都算匹配 . 元字符,可以匹配除换行符之外的所有字符 大小写敏感,但是可以关闭 \d  可以匹配0-9中的任意数字 {3}大括号里面的数字,边上前面一个字符匹配的 ...

  5. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  6. Python正则表达式学习摘要及资料

    摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...

  7. Python Click 学习笔记(转)

    原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...

  8. JavaScript正则表达式学习笔记(二) - 打怪升级

    本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...

  9. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

随机推荐

  1. (笔记)Linux下查看CPU使用率的命令

    1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或 ...

  2. 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies

    第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...

  3. Cisco 3550配置DHCP中继代理

    实验环境: 1.配置两个VLAN 10 和  VLAN 20 VLAN  10  IP地址设置:192.168.10.1  255.255.255.0  (192.168.10.1是VLAN 10网关 ...

  4. topK 算法

    搜索引擎热门查询统计 题目描述:    搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.    假设目前有一千万个记录(这些查询串的重复度比较高,虽然 ...

  5. 一款CSS3仿Google Play的垂直菜单

    之前分享过一款非常酷的CSS3垂直下拉动画菜单,是多级菜单.今天我们来看一款也是用CSS3制作的垂直菜单,是仿Google Play的菜单,菜单项都带有可爱的小图标,可以先来看看效果图: 当然你可以在 ...

  6. 分享10款效果惊艳的HTML5图片特效

    在HTML5的世界里,图片特效都十分绚丽,我们在网站上也分享过很多不错的HTML5图片特效,现在我们精选10款效果惊艳的HTML5图片特效分享给大家. 1.HTML5 3D正方体旋转动画 很酷的3D特 ...

  7. 压缩打包介绍/gzip压缩工具/bzip2压缩工具/xz压缩工具

    6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 常见的压缩文件格式 windows     .rar  .zip  .7z linux         ...

  8. df命令/du命令/磁盘分区

    4.1 df命令 4.2 du命令 4.3/4.4 磁盘分区 df命令 磁盘管理df 大小单位是KB,挂载点是linux上的目录 df -h 根据磁盘大小适当调整单位;单位有:Byte ,1KB,1M ...

  9. VC设置cookies实现文件刷下载量

    VC设置cookies实现文件刷下载量 VC设置cookies实现文件刷下载量 分类: c/c++2013-10-11 17:22 250人阅读 评论(0) 收藏 举报   目录(?)[+]   同学 ...

  10. 关于SpringMVC Json使用

    很简单的一个东西,这里就不做过多介绍了,写一个小Demo,随手记录下. 首先,在搭好SpringMVC工程环境之后,如果想用Spring自带的Json,需要额外的添加2个JAR包: 1.jackson ...