Learning Python 008 正则表达式-002 findall()方法
来源:互联网 发布:程序员工作累吗? 编辑:程序博客网 时间:2024/05/21 19:37
Python 正则表达式 — findall()
方法
重点 findall()
方法的使用 — 程序讲解
简单的符号的使用
正则表达式的库文件是re
,先导入库文件:
import re
.
的使用举例
# -?- coding: utf-8 -?-import rea = 'abca123'b = re.findall('a.', a)print(b)
输出
['ab', 'a1']
.
是一个占位符,我们将程序改成下面这个样子,再试试看:
# -?- coding: utf-8 -?-import rea = 'abca123'b = re.findall('a..', a)print(b)
输出
['abc', 'a12']
所以,几个.
,就表示会面保留几位。
*
的使用举例
# -?- coding: utf-8 -?-import rea = 'abca123'b = re.findall('a*', a)print(b)
运行
['a', '', '', 'a', '', '', '', '']
?
的使用举例
# -?- coding: utf-8 -?-import rea = 'abca123'b = re.findall('a?', a)print(b)
运行
['a', '', '', 'a', '', '', '', '']
组合的符号的使用
.*
的使用举例
# -?- coding: utf-8 -?-import resecret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'b = re.findall('ooxx.*xxoo', secret_code )print(b)
运行
['ooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoo']
.*
得到最多的匹配结果。我先解释一下上面为什么会得到这样的结果。程序将第一个ooxx
和最后一个xxoo
视为一组ooxx.*xxoo
。.*
使用贪心算法,能找多少找多少,只要能满足条件,反正就是越多越好。
.*?
的使用举例
# -?- coding: utf-8 -?-import resecret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'b = re.findall('ooxx.*?xxoo', secret_code )print(b)
运行
['ooxxIxxoo', 'ooxxamxxoo', 'ooxxAoboxxoo', 'ooxxSirxxoo']
.*?
使用非贪心算法,和上面.*
形成对比。
()
的使用举例
# -?- coding: utf-8 -?-import resecret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'b = re.findall('ooxx(.*?)xxoo', secret_code )print(b)
运行
['I', 'am', 'Aobo', 'Sir']
当我们需要的内容,我们就使用()
给括上。
我先来讲一个关于\n
换行符的正则表达式的知识点:
# -?- coding: utf-8 -?-import resecret_code = '''sdajksdhdlsjlooxxhelloxxoodsdsdooxxworldxxoodfsdf''b = re.findall('ooxx(.*?)xxoo', secret_code )print(b)
运行
['world']
我们希望得到的结果是['hello', 'world']
代码应该这样改:
# -?- coding: utf-8 -?-import resecret_code = '''sdajksdhdlsjlooxxhelloxxoodsdsdooxxworldxxoodfsdf''b = re.findall('ooxx(.*?)xxoo', secret_code, re.S )print(b)
运行
['hello\n', 'world']
再来看看下面这个:
# -?- coding: utf-8 -?-import resecret_code = 'dsdxx1xxdsdfxx2xxdfsdxx3xxdlrelxx4xxeuwuxx5xxnjkjh'b = re.findall('xx(.*?)xxdsdfxx(.*?)xx', secret_code )print(b)print(b[0][0])
运行
[('1', '2')]1
看到没有,找到的结果是列表([]
)里面包着元组(()
)。如果你想单独打印'1'
这个结果,你需要这样指定:b[0][0]
。
参考网站:
http://www.jikexueyuan.com/course/777_2.html?ss=1
2 0
- Learning Python 008 正则表达式-002 findall()方法
- python正则表达式-findall
- python 正则表达式 () findall
- python 正则表达式re.findall
- python 正则表达式re.findall
- python之正则表达式匹配全部findall()方法
- python 正则表达式 之re.findall
- Learning Python 008 正则表达式-003 search()方法
- Learning Python 008 正则表达式-004 sub()方法
- Learning Python 008 正则表达式-001
- python正则表达式 re (二)findall与finditer
- Python正则表达式学习(5)——re.findall()
- Python中正则表达式re模块-compile()和findall()
- python正则表达式一:match、search和findall
- 正则表达式 re.findall 用法
- Learning Python(3)--正则表达式
- Learning Python 008 正则表达式-005 compile模板的使用
- 正则表达式match和findall的区别
- 241. Different Ways to Add Parentheses(重要)
- Android Studio中Intel HAXM的那些坑
- Android setCompoundDrawables无效
- 嵌入式学习-linux系统-lesson2-内核相关
- 元素节点、属性节点、文本节点 的节点属性
- Learning Python 008 正则表达式-002 findall()方法
- UVA11111Generalized Matrioshkas
- VPNservice
- 图解 head first 设计模式
- Mybatis深入了解(五)----动态SQL
- Codeforces 689D Friends and Subsequences (RMQ+二分)
- 退出后点击浏览器后退不能回到成功页面;直接进入页面和跳转进入页面样式不同;防止直接输入页面地址或servlet;当servlet跳servlet时,进行其他操作后后退出现错误!
- android中wifi原理及流程分析(很经典)
- 【DRP】-servlet 请求传值