第五章 python中正则表达式的使用
>>> s = r'abc'
>>>
>>> re.findall(s,"aaaaaaaaaaaaa")
[]
>>> re.findall(s,"a")
[]
>>> re.findall(s,"abcaaaaaaaaaaaaaaaaaaa")
['abc']
>>> re.findall(s,"abcaaaaaaaaaaaaaaaaaaabc")
['abc', 'abc']
>>>
>>> st = "top tip tqp twp tep"
>>>
>>> res = r"top"
>>> re.findall(res,st)
['top']
>>> res = r"tip"
>>> re.findall(res,st)
['tip']
>>>
>>> res = r"t[io]p"
>>> re.findall(res,st)
['top', 'tip']
>>> res = r"t[^io]p"
>>> re.findall(res,st)
['tqp', 'twp', 'tep']
>>>
>>> r = r"hello"
>>> re.findall(r,s)
['hello', 'hello']
>>> re.findall(r,'t^')
[]
>>> r = "t[abc$]" 以什么结尾
>>>
>>> re.findall(r,'ta')
['ta']
>>> re.findall(r,'tb')
['tb']
>>> re.findall(r,'tax')
['ta']
>>> re.findall(r,'t$')
['t$']
>>> r = r"x[a-zA-Z]x"
>>> r = r"x[a-zA-Z0-9]x"
>>> re.findall(r,'x1x')
['x1x']
>>> re.findall(r,'x2x')
['x2x']
>>> re.findall(r,'x9x')
['x9x']
>>> r = r"^abc"
>>>
>>> import re
>>> re.findall(r,'abc')
['abc']
>>> r = r"\^abc" 这里我们使用\来做转义
>>> import re
['^abc', '^abc', '^abc']
>>> re.findall(r,'1234567890')
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
>>> r = "\d" 这里我们使用了\d,它就表示[0-9]
>>> re.findall(r,'1234567890')
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
-12345670
>>> r= r"^010-\d\d\d\d\d\d\d\d"
>>> re.findall(r,'010-87654321')
['010-87654321']
>>> re.findall(r,'a')
['a']
>>> re.findall(r,'ab')
['ab']
>>> re.findall(r,'abbbbb')
['abbbbb']
>>> re.findall(r,'a')
[]
>>> re.findall(r,'ab')
['ab']
>>> re.findall(r,'abb')
['abb']
>>> re.findall(r,'abbbbbbb')
['abbbbbbb']
['01012345678']
>>> re.findall(r,'010-12345678')
['010-12345678']
>>> re.findall(r,'010--12345678') 我们看一下这样就不行了,这样就达到了我们的要求
>>>
>>> re.findall(r,'abbbbbbbbb')
['abbbbbbbbb']
>>> r = r"ab+?" 非贪婪模式做最小匹配
>>> re.findall(r,'abbbbbbbbb')
['ab']
>>> re.findall(r,'a')
['a']
>>> re.findall(r,'b')
[]
>>> re.findall(r,'aa')
['aa']
>>> re.findall(r,'aaa')
['aaa']
>>> re.findall(r,'aaaa')
['aaa', 'a']
>>> print p
<_sre.SRE_Pattern object at 0x7f66cc831c00>
>>> re.findall(r1,"010-12345678")
['010-12345678']
>>> re.findall(r1,"010-1234567")
[]
>>> p_tel
<_sre.SRE_Pattern object at 0x7f66cc7d89d0>
>>> p_tel.findall('010-12345678') 编译好的正则要比未编译的正则匹配起来的速度要快很多
['010-12345678']
>>> p_tel.findall('010-123456789')
['010-12345678']
>>> py_re.findall('PY')
['PY']
>>> py_re.findall('py')
['py']
>>> py_re.findall('Py')
['Py']
>>> py_re.findall('pY')
['pY']
<_sre.SRE_Match object at 0x7f66cc6dd440> 这个对象当中其实是包含py这个字符串的
>>> if x :
... pass
...
>>> py_re.search('hello py')
<_sre.SRE_Match object at 0x7f66cc6dd4a8>
>>> py_re.search('py hello')
<_sre.SRE_Match object at 0x7f66cc6dd440>
>>> py_re.search('py hello ')
>>> py_re.findall('hello py hello')
['py']
>>> py_re.findall('hello py hello py py')
['py', 'py', 'py']
>>> py_re.finditer('hello py hello py py')
<callable-iterator object at 0x7f66cc6e8a50> 它返回的是一个迭代器的对象,
>>> x
<_sre.SRE_Match object at 0x7f66cc6dd440>
('python python python ccccc', 3)
>>> ip = "1.2.3.4"
['1', '2', '3', '4']
>>> s = "123+456-789*000"
>>>
>>> re.split(r'[\+\-\*]',s) 我们使用正则对其进行不同分隔符的指定
['123', '456', '789', '000']
['DEBUG', 'DOTALL', 'I', 'IGNORECASE', 'L', 'LOCALE', 'M', 'MULTILINE', 'S', 'Scanner', 'T', 'TEMPLATE', 'U', 'UNICODE', 'VERBOSE', 'X', '_MAXCACHE', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__version__', '_alphanum', '_cache', '_cache_repl', '_compile', '_compile_repl', '_expand', '_pattern_type', '_pickle', '_subx', 'compile', 'copy_reg', 'error', 'escape', 'findall', 'finditer', 'match', 'purge', 'search', 'split', 'sre_compile', 'sre_parse', 'sub', 'subn', 'sys', 'template']
>>> r1 = r"py.net"
>>>
>>> re.findall(r1,'py.net')
['py.net']
>>> re.findall(r1,'pyonet')
['pyonet']
>>> re.findall(r1,'py\nnet')
[]
>>> re.findall(r1,'py\nnet',re.S)
['py\nnet']
>>> re.findall(r1,'py\tnet',re.S)
['py\tnet']
>>> s = """
... hello py
... py hello
... hello py hello
... py hello
'\nhello py\npy hello\nhello py hello\npy hello\n'
>>> r = r"^py"
['py', 'py']
>>> tel = r"""
... \d{3,4}
... -?
... \d{8}
... """
[]
>>> re.findall(tel,'010-123456787',re.X) 使用正则的X属性匹配电话号码
['010-12345678']
... [0-9]+[^0-9] #Decimal form
... |0[0-7]+[^0-7] #Octal form
... |x[0-9a-fA-F]+[^0-9a-fA-F] #Hexadecimal form
... """,re.VERBOSE)
>>> 这里我们(定义了一个分组)
>>> re.match(email,'zzz@hyserver.com') 匹配以.com结尾成功
<_sre.SRE_Match object at 0x7f30724615d0>
>>> re.match(email,'zzz@hyserver.cn') 匹配以.cn结尾成功
<_sre.SRE_Match object at 0x7f3072461648>
>>> re.match(email,'zzz@hyserver.org') 匹配以.org结尾失败
>>>
['.com'] 还会优先的返回分组当中的数据
>>> s = r"""
... hhsdj dskj hello src=csvt yes jdjsds
... djhsjk src=123 yes jdsa
... src=234 yes
... hello src=python yes ksa
... """
>>> print s
hhsdj dskj hello src=csvt yes jdjsds
djhsjk src=123 yes jdsa
src=234 yes
hello src=python yes ksa
['hello src=csvt yes', 'hello src=python yes']
>>> r1= r"hello src=(.+) yes" 我们也可以将里面的.+定义成一个分组然后进行相应的匹配,它就会只返回=后面的数据,这样我们在做爬虫的时候,对网页的某个值进行提取
>>> re.findall(r1,s)
['csvt', 'python']
2 import re
3 import urllib
4
5 def getHtml(url):
6 page = urllib.urlopen(url)
7 html = page.read()
8 return html
9
10 def getImg(html):
11 reg = r'src="(.*?\.jpg)" width'
12 imgre = re.compile(reg)
13 imglist = re.findall(imgre,html)
14 x = 0
15 for imgurl in imglist:
16 urllib.urlretrieve(imgurl,'%s.jpg' % x)
17 x+=1
18 return imglist
19
20 html = getHtml("http://image.baidu.com/i?tn=baiduimage&ct=201326592&lm=-1&cl=2&word=%CD%BC%C6%AC&fr=ala&ala=1&alatpl=others&pos=0")
21 getImg(html)
0.jpg 12.jpg 15.jpg 18.jpg 20.jpg 23.jpg 26.jpg 3.jpg 6.jpg 9.jpg
10.jpg 13.jpg 16.jpg 19.jpg 21.jpg 24.jpg 27.jpg 4.jpg 7.jpg getjpg.py
11.jpg 14.jpg 17.jpg 1.jpg 22.jpg 25.jpg 2.jpg 5.jpg 8.jpg
>>>
>>> b = a
>>> b
[1, 2, 3, 'a', 'b', 'c']
>>> a
[1, 2, 3, 'a', 'b', 'c']
>>>
>>> id(a)
139845710543400
>>> id(b)
139845710543400
>>> a
[1, 2, 3, 'a', 'b', 'c', 'd']
>>> b
[1, 2, 3, 'a', 'b', 'c', 'd']
>>> b
[1, 2, 3, 'a', 'b', 'c', 'd', 4]
>>> a
>>>
>>> a = [1,2,3,['a','b','c']]
>>> b=a
>>>
>>> b
[1, 2, 3, ['a', 'b', 'c']]
>>> c
[1, 2, 3, ['a', 'b', 'c']]
>>> id(a)
139845710626400
>>> id(b)
139845710626400
139845710722040
>>> a
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> b
[1, 2, 3, ['a', 'b', 'c'], 'd']
>>> c
16290136
>>> id(c[0])
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
>>> c
>>> d
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd']
139845710626688
>>> id(d[3])
139845710721824 我们发现这时已经不是同一个地址空间了
>>> a
[1, 2, 3, ['a', 'b', 'c', 'd'], 'd', 'e']
>>> d
转载于:https://www.cnblogs.com/hyserver/p/4498256.html
第五章 python中正则表达式的使用相关推荐
- Python中正则表达式用法 重点格式以这个为准_首看_各种问题
20210811 https://www.jb51.net/article/101258.htm 一.惰性模式的概念: 此模式和贪婪模式恰好相反,它尽可能少的匹配字符以满足正则表达式即可,例如: va ...
- 第五章 Python数据结构
第五章 Python数据结构 本章更详细地讨论一些已经讲过的数据类型的使用,并引入一些新的类型. 5.1 列表 列表数据类型还有其它一些方法.下面是列表对象的所有方法: insert(i, x) -- ...
- 第十五章 Python和Web
第十五章 Python和Web 本章讨论Python Web编程的一些方面. 三个重要的主题:屏幕抓取.CGI和mod_python. 屏幕抓取 屏幕抓取是通过程序下载网页并从中提取信息的过程. 下载 ...
- Python入门 - 笔记 - 第三章 Python中的变量和数据类型
第三章 Python中的变量和数据类型 -------------------------------------------------------------------------------- ...
- python中正则表达式_Python中正则表达式详解
正则表达式是用来简洁表达一组字符串的表达式,本文主要和大家分享Python 中正则表达式知识详解,希望能帮助到大家.操作符说明实例.表示任何单个字符 [ ]字符集,单个字符取值范围[abc]表示a或b ...
- python中正则表达式的简单应用_Python正则表达式详细应用
原文地址:http://www.jb51.net/article/65286.htm 1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合, ...
- 《SVN宇宙版教程》:第五章 TortoiseSVN中Repo-browser介绍
第五章 TortoiseSVN中Repo-browser介绍 导言: 窗口Repo-browser是TortoiseSVN提供的一个管理工作副本或仓库文件的工具,此窗口在使用TortoiseSVN工具 ...
- 站长在线Python精讲:Python中正则表达式的语法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中正则表达式的语法详解>.本知识点主要内容有9点:行定位符.元字符.限定符.字符集.排除字符.选择字符.转义字符 ...
- 第五章 Java 中的 wait、notify 和 notifyAll 方法示例
您可能已经注意到 Object 类具有三个 final 方法,分别称为 wait.notify 和 notifyAll.这些方法用于线程间通信.Java 5 引入了执行器框架,它为您处理线程间通信,并 ...
最新文章
- linux 查找大文件
- Python 程序扩展名(py, pyc, pyw, pyo, pyd) 及发布程序时的选择
- 使用 file_get_contents 获取网站信息报错failed to open stream: HTTP request failed!
- java使用内部类的好处及其初始化
- 新概念51单片机C语言教程纠错(1)
- Shell in AIX Web端 自动远程执行重启tomcat服务命令
- 【html、CSS、javascript-9】jquery-选择器及过滤器
- app客户端上传图片实现方式
- 在windows的命令行窗口打开.ipynb文件
- 算法——指定日期的星期推算
- SpringBoot整合Quartz之动态控制任务(暂停,启动,修改执行时间)
- keepass使用坚果云管理我的密码
- 产品名称:iWX JAVA微信管理平台源码-微友1314
- Java中多态、重写方法、instanceof运算符、重写equals的相关案例
- 《互联网金融投资理财一册通》一一1.1 互联网金融
- 去掉goland中间的令人烦躁的竖线
- 英飞凌TRAVEO II介绍
- PC 端微信逆向分析
- linux樱桃树软件名字,名字带“樱”的3种水果,多数人最先想到樱桃,第3种最少见!...
- 行业专网应用频段分析