day19-python的正则表达式2
正则对象的findall方法
findall(string[, pos[, endpos]])
搜索string,以列表形式返回全部能匹配的子串.
import re
p1 = re.compile(r'\d+')
a_str = 'one1two222three33four4'
#正则对象的split方法,使用正则匹配进行分割字符串
#最后是以列表的形式返回
print(p1.split(a_str)) #正则对象的findall方法,来查找符合对象的子字符串
#最后是以列表的形式返回
print(p1.findall(a_str)) #finditer 每个返回值都是是一个对象,用group()方法查看,
for i in p1.finditer(a_str):
print(i.group()) 输出结果:
['one', 'two', 'three', 'four', '']
['1', '222', '33', '4']
1
222
33
4
sub方法
sub(repl, string[, count])
使用repl替换string中每一个匹配的子串后返回替换后的字符串。
当repl是一个字符串时,可以使用\id或\g<id>、\g<name>引用分组,但不能使用编号0。
当repl是一个方法时,这个方法应当只接受一个参数(Match对象),并返回一个字符串用于替换(返回的字符串中不能再引用分组)。
count用于指定最多替换次数,不指定时全部替换。
import re
p = re.compile(r'(\w+) (\w+)')
s = 'i say,hello word!'
print(p.sub(r'\2 \1',s)) def func(m):
return m.group(1).title() + ' ' +m.group(2).title()
print(p.sub(func,s)) 输出结果:
say i,word hello!
I Say,Hello Word! #解释:
#\(id)就是匹配的括号的内容,id从默认从1开始计数
#m.group(1)是一个字符串,调用字符串的title()方法,所有单词的搜字母大写。
match匹配对象
Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。上面的过程中多次使用了match对象,调用了他的group()和groups()等方法。
import re
prog = re.compile(r'(?P<tagname>abc)(\w*)(?P=tagname)')
result = prog.match('abclfjlad234sjldabc') # finiter 迭代以后每个对象都是一个matche对象 print(dir(result)) #查看match方法
print(result.group()) #group方法
print(result.groups())
print(result.group(2))
print(result.group(1))
print('####'*10 + 'tagname' + '####'*10)
print(result.group('tagname'))
#matche对象的group返回一个元组,下标是以1开头 print(result.groupdict()) 输出结果:
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'end', 'endpos', 'expand', 'group', 'groupdict', 'groups', 'lastgroup', 'lastindex', 'pos', 're', 'regs', 'span', 'start', 'string']
abclfjlad234sjldabc
('abc', 'lfjlad234sjld')
lfjlad234sjld
abc
########################################tagname########################################
abc
{'tagname': 'abc'}
解释:
1, 我们可以看到result已经由字符串转换成了一个正则对象。
2, resule.groups()可以查看出来所有匹配到的数据,每个()是一个元素,最终返回一个tuple
3, group()既可以通过下标(从1开始)的方式访问,也可以通过分组名进行访问。
4, groupdict只能显示有分组名的数据
day19-python的正则表达式2的更多相关文章
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】
[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pytho ...
- Python 进阶 - 正则表达式
1. 正则表达式基础 1.1. 简单介绍 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十 ...
- python study - 正则表达式
第 7 章 正则表达式 7.1. 概览 7.2. 个案研究:街道地址 7.3. 个案研究:罗马字母 7.3.1. 校验千位数 7.3.2. 校验百位数 7.4. 使用 {n,m} 语法 7.4.1. ...
- python使用正则表达式文本替换
2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: 如果不是在某个文件 ...
- python的正则表达式 re
python的正则表达式 re 本模块提供了和Perl里的正则表达式类似的功能,不关是正则表达式本身还是被搜索的字符串,都可以是Unicode字符,这点不用担心,python会处理地和Ascii字符一 ...
- Python之正则表达式(re模块)
本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 正则表达式(Regluar Expressions)又称规则 ...
- Python:正则表达式详解
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能 ...
- 【Python】正则表达式纯代码极简教程
<Python3正则表达式>文字版详细教程链接:https://www.cnblogs.com/leejack/p/9189796.html ''' 内容:Python3正则表达式 日期: ...
- 【Python】正则表达式简单教程
说明:本文主要是根据廖雪峰网站的正则表达式教程学习,并根据需要做了少许修改,此处记录下来以备后续查看. <Python正则表达式纯代码极简教程>链接:https://www.cnblogs ...
- 【转】Python之正则表达式(re模块)
[转]Python之正则表达式(re模块) 本节内容 re模块介绍 使用re模块的步骤 re模块简单应用示例 关于匹配对象的说明 说说正则表达式字符串前的r前缀 re模块综合应用实例 参考文档 提示: ...
随机推荐
- nRF52832的SAADC
SAADC部分思维导图 1ADC原理 1.1主要特点 1)8/10/12分辨率,使用过采样可达到14位分辨率 2)多达8个通道 单端输入时使用1个通道,2个通道可组成差分输入 单端和差分输入时均可配置 ...
- Import Projects from git
1:工具栏window -->show view -->Other
- Asp.net core 学习笔记 ( HttpClient )
2018-09-18 core 2.1 之后有新的方案咯 http://www.talkingdotnet.com/3-ways-to-use-httpclientfactory-in-asp-net ...
- 日常英语---七、[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准)
日常英语---七.[Updated November 14 at 4:10 PM PST] Scheduled Game Update - November 14, 2018(n.标准) 一.总结 一 ...
- 日常英语---六、Maplestory Illium
日常英语---六.Maplestory Illium 一.总结 一句话总结: maplestory-['meiplstɔri] illium-镍铬合金 ['meiplstɔri] n. 枫之谷(网 ...
- 关于 Oracle DB CONSTRAINT约束的一些SQL ORA-02292: integrity constraint violated
ALTER TABLE table_name DISABLE CONSTRAINT constraint_name; select * from all_constraints where owner ...
- spring cloud: Hystrix(五):如禁止单个FeignClient使用hystrix
spring cloud: Hystrix(五):如禁止单个FeignClient使用hystrix 首先application.yml / applicatoin.propreties的配置项:fe ...
- Exception:public class feign.codec.EncodeException feign.codec.EncodeException: 'Content-Type' cannot contain wildcard type '*'
一.异常出现的场景 Spring Cloud 服务A通过feign调用服务B;之前是好好的,但今天突然就不好了,抛以下异常===> 出现原因补充,Spring Boot默认的JSON方式 Ja ...
- 2018JavaScript状态调查:5个重要的思考( import takeaways) (摘译)
英文原文 (内有视频). 以下是翻译和摘录. 最近JS状态调查结构出来了,如果你关心网页开发,你会关心这些结果. 本文探索5个takeaways并总结这些结论. 1. JavaScript Had ...
- HDOJ-1806 ( Frequent values ) 线段树区间合并
http://acm.hdu.edu.cn/showproblem.php?pid=1806 线段树维护区间出现频率最高的出现次数.为了维护上者,需要维护线段前后缀的出现次数,当和其他线段在端点处的字 ...