python正则表达式
来源:互联网 发布:什么是云计算的基础 编辑:程序博客网 时间:2024/06/14 03:01
模块:re
import re
方法主要有:
p=re.compile(r"abc") 返回pattern对象
p.match("str") 返回str中符合该pattern对象的字符串
#p.search("str") 返回str中符合该pattern对象的字符串
#p.findall("str") 返回list对象
#p.finditer("str") 返回迭代器对象
区别:
match方法必须要求从str开头匹配成功
search方法只要在str中匹配成功就返回第一个匹配成功的字符串
findall返回所有匹配成功的字符串,返回对象为list
finditer与findall类似,只不过是用next()方法访问内容
match、search方法都需要group()方法打印输出或者用span方法打印位置,例如(0,3)
也可直接使用re.match(pattern,string, flags=0)、re.search(pattern,string, flags=0)直接匹配字符串
匹配失败会返回None
贪婪模式和非贪婪模式:
例子:
>>> p=re.compile('[abc]{2,3}')
>>> print p.findall('abcabc')
['abc', 'abc']
>>> p=re.compile('[abc]{2,3}?')
>>> print p.findall('abcabc')
['ab', 'ca', 'bc']
例中问号就是切换为非贪婪模式,默认为贪婪模式
数量词(*、+、{2}、{2,3})这些后面加问号就是切换非贪婪模式
替换:
re.sub(pattern, repl,string, count=0, flags=0)
参数:
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。
匿名分组(group方法):
>>> import re
>>> p=re.compile('abc')
>>> p=re.compile('(a)b(c)')
>>> m=p.match('abcdef')
>>> m.groups()
('a', 'c')
>>> m.groupdict()
{}
命名分组(groupdict方法):
>>> p=re.compile('(?P<name>a)b(c)')
>>> m=p.match('abcdef')
>>> m.groups()
('a', 'c')
>>> m.groupdict()
{'name': 'a'}
>>> p=re.compile('(?P<name>a)b(?P<age>c)')
>>> m=p.match('abcdef')
>>> m.groupdict('age')
{'age': 'c', 'name': 'a'}
>>> (m.groupdict())['age']
'c'
>>> (m.groupdict())['name']
'a'
>>> p=re.compile(r'(?P<name>a)b(c)(?P=name)') #红色处为引用前边定义的(?P<name>a),相当于(a)b(c)a
>>> p.match('abcac').group()
'abca'
>>> p.findall()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Required argument 'string' (pos 1) not found
>>> p.findall('abcac')
[('a', 'c')]
>>> p=re.compile(r'(a)b(c)\2') # \2指的是引用第二个分组,相当于(a)b(c)c
>>> p.match('abcc')
<_sre.SRE_Match object at 0x0000000003B258B0>
>>> p.match('abcc').group()
'abcc'
>>> p.match('abcc').groupdict()
{}
>>> p.findall('abcc')
[('a', 'c')]
分隔符拆分字符串(类似于unix下的awk -F):
>>> p=re.compile('-')
>>> p.split('a-bb-ccc-dddd-eeeee') #返回list对象
['a', 'bb', 'ccc', 'dddd', 'eeeee']
- python正则表达式学习
- c++正则表达式,python
- Python正则表达式(一)
- python的正则表达式
- Python正则表达式
- Python初学-正则表达式
- 正则表达式与python
- python正则表达式学习
- python正则表达式学习
- python正则表达式学习
- python正则表达式
- Python - 正则表达式
- Python正则表达式
- python正则表达式
- Python正则表达式指南
- Python正则表达式指南
- Python 正则表达式指南
- python 正则表达式
- ELF 文件中的section 和 segment
- 多路复用IO&select&poll
- Vitual在继承中修饰成员函数
- %p一些简单的用法
- 频道管理-RecyclerView版--桃先森
- python正则表达式
- EAS序时簿界面显示,不再忽略数值零
- Ubuntu 16.04 vlc和ffmpeg播放rtsp视频
- 初等排序算法集合
- POJ 1213 Roman Numerals 笔记
- 事件Io
- webpack开发跨域问题解决
- MYSQL AUTO_INCREMENT自增的用法
- Struts2_Spring_Hibernate整合及测试_1(标准)