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. hibernate+pageBean实现分页dao层功能代码

    今天闲来无事,摆弄了一下分页,突然发现很多代码长时间不用就生梳了,虽然有些基础,但没有一篇整合的.这里还是简单示例,主要是以后自己翻着看不用百度找啊找找不到一篇想要的 1.PageBean实体类,一页 ...

  2. MySQL存储过程、触发器 小例子

    一.存储过程 语法: CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类形...]) BEGIN ... END 参数: IN 输入参数 表示该参数的值必须在调用存 ...

  3. 用不上索引的SQL语句

    下面介绍六种建立索引后不起作用的sql语句. 1.使用不等于操作符(<>, !=) SELECT * FROM dept WHERE staff_num <> 1000; × ...

  4. (转)live555学习笔记7-RTP打包与发送

    七 RTP打包与发送 rtp传送开始于函数:MediaSink::startPlaying().想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当 ...

  5. 精美的HTML5/CSS3表单 带小图标

    今天我们要来分享一款非常精美的HTML5/CSS3表单,准备地说,这是一款经过美化的input输入表单,每一个输入表单都可以定义其两侧的小图标,非常华丽.另外,这款表单应用还采用了3种不同的风格主题, ...

  6. zip压缩工具 tar打包 打包并压缩

    6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 zip压缩工具 xz,bzip2,gzip都不支持压缩目录 zip可以压缩目录 压缩文件 zip  2.txt.zip  2.txt [ ...

  7. ASP.NET获取文件名,后缀名

    using System.IO; //引入命名空间 string path = "text.aspx"; string pathName = Path.GetFileName(pa ...

  8. 解决ESXi有虚拟机模版部署的CentOS虚拟机,网卡eth0找不到问题

    1,问题和虚拟机克隆后出现网卡找不到问题类似. 2,修改主机名hostname 修改 /etc/sysconfig/network文件 3,删除/etc/sysconfig/network-scrip ...

  9. UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念

    lienhua342014-10-05 1 main 函数是如何被调用的? 在编译 C 程序时,C 编译器调用链接器在生成的目标可执行程序文件中,设置一个特殊的启动例程为程序的起始地址.当内核执行 C ...

  10. 《构建高性能web站点》读书笔记:CPU/IO并发策略

    服务器并发处理能力:单位时间内处理的请求数,吞吐率,reqs/s apache的mod_status,显示的 requests/sec,从启动开始的平均计算值.lighttpd的mod_status显 ...