Learning Python 008 正则表达式-002 findall()方法
Python 正则表达式 — findall()方法
重点 findall()方法的使用 — 程序讲解
简单的符号的使用
正则表达式的库文件是re,先导入库文件:
import re
.的使用举例
# -?- coding: utf-8 -?-
import re
a = 'abca123'
b = re.findall('a.', a)
print(b)
输出
['ab', 'a1']
.是一个占位符,我们将程序改成下面这个样子,再试试看:
# -?- coding: utf-8 -?-
import re
a = 'abca123'
b = re.findall('a..', a)
print(b)
输出
['abc', 'a12']
所以,几个.,就表示会面保留几位。
*的使用举例
# -?- coding: utf-8 -?-
import re
a = 'abca123'
b = re.findall('a*', a)
print(b)
运行
['a', '', '', 'a', '', '', '', '']
?的使用举例
# -?- coding: utf-8 -?-
import re
a = 'abca123'
b = re.findall('a?', a)
print(b)
运行
['a', '', '', 'a', '', '', '', '']
组合的符号的使用
.*的使用举例
# -?- coding: utf-8 -?-
import re
secret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'
b = re.findall('ooxx.*xxoo', secret_code )
print(b)
运行
['ooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoo']
.*得到最多的匹配结果。我先解释一下上面为什么会得到这样的结果。程序将第一个ooxx和最后一个xxoo视为一组ooxx.*xxoo。.*使用贪心算法,能找多少找多少,只要能满足条件,反正就是越多越好。
.*?的使用举例
# -?- coding: utf-8 -?-
import re
secret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'
b = re.findall('ooxx.*?xxoo', secret_code )
print(b)
运行
['ooxxIxxoo', 'ooxxamxxoo', 'ooxxAoboxxoo', 'ooxxSirxxoo']
.*?使用非贪心算法,和上面.*形成对比。
()的使用举例
# -?- coding: utf-8 -?-
import re
secret_code = 'sdajksdhfakjldooxxIxxoosdsdsdmknmdsdooxxamxxoodsddjksdjooxxAoboxxoodsddsddkjlooxxSirxxoosjdlsjl'
b = re.findall('ooxx(.*?)xxoo', secret_code )
print(b)
运行
['I', 'am', 'Aobo', 'Sir']
当我们需要的内容,我们就使用()给括上。
我先来讲一个关于\n换行符的正则表达式的知识点:
# -?- coding: utf-8 -?-
import re
secret_code = '''sdajksdhdlsjlooxxhello
xxoodsdsdooxxworldxxoodfsdf''
b = re.findall('ooxx(.*?)xxoo', secret_code )
print(b)
运行
['world']
我们希望得到的结果是['hello', 'world']
代码应该这样改:
# -?- coding: utf-8 -?-
import re
secret_code = '''sdajksdhdlsjlooxxhello
xxoodsdsdooxxworldxxoodfsdf''
b = re.findall('ooxx(.*?)xxoo', secret_code, re.S )
print(b)
运行
['hello\n', 'world']
再来看看下面这个:
# -?- coding: utf-8 -?-
import re
secret_code = 'dsdxx1xxdsdfxx2xxdfsdxx3xxdlrelxx4xxeuwuxx5xxnjkjh'
b = re.findall('xx(.*?)xxdsdfxx(.*?)xx', secret_code )
print(b)
print(b[0][0])
运行
[('1', '2')]
1
看到没有,找到的结果是列表([])里面包着元组(())。如果你想单独打印'1'这个结果,你需要这样指定:b[0][0]。
Learning Python 008 正则表达式-002 findall()方法的更多相关文章
- Learning Python 008 正则表达式-003 search()方法
Python 正则表达式 - search()方法 findall()方法在找到第一个匹配之后,还会继续找下去,findall吗,就是找到所有的匹配的意思.如果你只是想找到第一个匹配的信息后,就不在继 ...
- Learning Python 008 正则表达式-003 sub()方法
Python 正则表达式 - sub()方法 sub()方法 sub()方法:替换符合规律的内容,返回替换的值 # -?- coding: utf-8 -?- import re secret_cod ...
- Learning Python 008 正则表达式-001
Python 正则表达式 总结 这节课讲讲正真使用的技术 - 正真表达式. 文本爬虫 什么是正则表达式 正则表达式这个名词听起来就有一种很官方的感觉,但是它是一个很很很有用的技术.我用语言是不能形容它 ...
- python中正则表达式 re.findall 用法
在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配. 其中,re.findall() 函数可以遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表. 在python源代码中 ...
- Python day20正则表达式和re方法
元字符6个函数以及几个元字符1.'.'通配符2.'^'以什么开头3.'$'以什么结尾4.'*'紧挨着的字符0~∞次5.'+'紧挨着的字符1~∞次6.'?'紧挨的字符0次或1次7.'{}' {0,}== ...
- 正则表达式 re.findall 用法
正则 re.findall 的简单用法(返回string中所有与pattern相匹配的全部字串,返回形式为数组)语法: findall(pattern, string, flags=0) import ...
- python正则表达式(5)--findall、finditer方法
findall方法 相比其他方法,findall方法有些特殊.它的作用是查找字符串中所有能匹配的字符串,并以结果存于列表中,然后返回该列表 注意: match 和 search 是匹配一次 finda ...
- Python正则表达式re.findall("[A-Za-z]([A-Za-z0-9])*[.]txt",'Abc2019.txt')的结果为什么是['9']
在<Python妙用re.sub分析正则表达式匹配过程>中老猿分析了findall函数的返回情况,老猿前一阵子在执行这个语句时: >>> re.findall(" ...
- Python基于正则表达式实现文件内容替换的方法
Python基于正则表达式实现文件内容替换的方法 本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而 ...
随机推荐
- vim编辑器常规配置
为了很舒服的编写程序,请把vim配置好 # apt install vim 安装vim编辑器 #sudo vim /etc/vim/vimrc ///必须加上权限sudo 在这个文件中,会有 ...
- 财经世界(5)国际货币基金组织,世界银行,国际清算银行(BIS)与美联储
(1)国际货币基金组织 *国际货币基金组织(International Monetary Fund,简称:IMF)是根据1944年7月在布雷顿森林会议签订的<国际货币基金协定>,于1945 ...
- hadoop自带例子SecondarySort源码分析MapReduce原理
这里分析MapReduce原理并没用WordCount,目前没用过hadoop也没接触过大数据,感觉,只是感觉,在项目中,如果真的用到了MapReduce那待排序的肯定会更加实用. 先贴上源码 pac ...
- finally return 执行关系 异常处理 c#
Return.finally执行关系简述 除了函数出现system.exit(0)终止虚拟机,finally中的代码一定执行,return语句会等待finally的执行:如果是值传递,finally中 ...
- 【leetcode刷题笔记】Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- 前端基础-CSS属性操作
前端基础-CSS属性操作 css text 文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB( ...
- linux bash缓存
http://www.xuebuyuan.com/296675.html 在已经运行的系统中更改了某些以前存在于PATH环境变量所指明的目录中的程序的存放目录后可能出现No such file or ...
- php中删除数组的第一个元素和最后一个元素的函数
对于一个php数组,该如何删除该数组的第一个元素或者最后一个元素呢?其实这两个过程都可以通过php自带的函数 array_pop 和 array_shift 来完成,下面就具体介绍一下如何来操作. ( ...
- linux shell编程(二) 条件测试
bash中常用的条件测试有三种 条件测试的表达式:[ expression ] [[ expression]] 第一种:整数测试: -eq 测试两个整数是否相等,比如[ $A -eq $B ] -n ...
- .net短信接口调用示例(106短信通道)
1. [代码]调用代理示例 using System;using System.Data;using System.Configuration;using System.Collections;usi ...