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模块综合应用实例 参考文档 提示: ...
随机推荐
- P359 usestock2.cpp
IDE Qt Creator 4.0.3 stock.h #ifndef STOCK_H #define STOCK_H #include <string> class Stock //类 ...
- UCS2编码
UCS2就是标准的unicode编码, 它是某国际组织设计的一种文字符号编码表,包括了世界上绝大多数文字和符号,包括中文,每个字符使用2字节编码,因此叫ucs2. 这里有一篇文章对Unicode编码做 ...
- 通过AndroidSDK自带的Tool在dos命令行窗口显示日志,并存入txt文档中
1.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集. 如果一个文本文件是utf-8的,那么在dos窗口中不能正确显示文件中的内容. 以下命令切换编码: ch ...
- Linux下python默认版本切换成替代版本
本文链接自http://www.myhack58.com/Article/48/66/2016/71806.htm 当你安装 Debian Linux 时,安装过程有可能同时为你提供多个可用的 Pyt ...
- WIN7右键在目录当前打开命令行Cmd窗口
Win7系统大家习惯“Win+R”的组合键打开命令提示符. 2. 通常情况下,我们点击鼠标右键是没有命令行选项的.. 3.在桌面上先按住Shift键,然后鼠标右键,出现选项“在此处打开命令窗口(W)” ...
- Java使用Spring初识
1.首先是引用了,然后pom.xml如下: <dependency> <groupId>org.springframework</groupId> <arti ...
- python中函数与函数式编程(二)
首先要明白为什么要用到返回值,返回值的作用就是为了分情况来处理下面的程序(个人见解总结) 1.函数返回值 def test1(): pass def test2(): return 0 def tes ...
- hdu number number number 斐波那契数列 思维
http://acm.hdu.edu.cn/showproblem.php?pid=6198 F0=0,F1=1的斐波那契数列. 给定K,问最小的不能被k个数组合而成的数是什么. 赛后才突然醒悟,只要 ...
- Spring Batch JSON 支持
Spring Batch 4.1 开始能够支持 JSON 格式了.这个发布介绍了一个新的数据读(item reader)能够读取一个 JSON 资源,这个资源按照下面的格式: [ { &q ...
- php算法,冒泡排序
冒泡排序 /*** *从小到大排列 * 逻辑分析 假设数组 $arr=[a,b,c,d]; * 总数=4; * 比较对象 第几个元素 比较次数 * a 1 3 * b 2 2 * c 3 1 **/ ...