Python中的正则
2018-11-22 08:44:50来源:博客园 阅读 ()
regex_lst = [
('字符组',),
('非打印字符',),
('特殊字符',),
('定位符',),
('限定符',),
('re模块',),
('分组命名',),
('或匹配',),
('贪婪匹配与惰性匹配',),
]
字符组
[0-9]
[a-z]
[A-Z]
[^a]
非打印字符
\w 匹配字母,数字,下划线 word
\s 匹配空字符 space
\d 匹配数字 digit
特殊字符
. 匹配除换行符 \n 之外的任何单字符
定位符
^ 匹配字符串的开始位置
$ 匹配字符串的结尾位置
限定符
* 0次或多次
+ 1次或多次
? 0次或1次
{n} n次
{n,} n次或多次
{n,m} n次至m次
re模块
re_lst = [
('re.compile(regex)',),
('re.findall(pattern, str)',),
('re.finditer(pattern, str)',),
('re.search(pattern, str)',),
]
re.compile(regex)
1 import re 2 3 """ 4 re.compile(regex) 5 编译一个正则表达式模式,返回一个模式对象 6 """ 7 regex = r'[a-z]' 8 pattern = re.compile(regex)
re.findall(pattern, str)
1 import re 2 3 """ 4 re.findall(pattern, str) 5 返回所有满足匹配条件的结果,并放到列表中 6 """ 7 regex = r'[a-zA-Z]+' 8 s = 'Hello Python' 9 pattern = re.compile(regex) 10 11 lst = re.findall(pattern, s) 12 print(lst) # ['Hello', 'Python']
re.finditer(pattern, str)
1 import re 2 3 """ 4 re.finditer(pattern, str) 5 返回迭代器 6 迭代器中每一个元素需要调用group(),得到结果 7 """ 8 regex = r'[a-zA-Z]+' 9 s = 'Hello Python' 10 pattern = re.compile(regex) 11 12 iterator = re.finditer(pattern, s) 13 14 print(iterator) # <callable_iterator object at 0x000001FDB3F29BE0> 15 16 for i in iterator: 17 print(i.group())
re.search(pattern, str)
1 import re 2 3 """ 4 re.search(pattern, str) 5 返回满足匹配条件的第一个结果对象 6 """ 7 regex = r'[a-zA-Z]+' 8 s = 'Hello Python' 9 pattern = re.compile(regex) 10 11 obj = re.search(pattern, s) 12 13 if obj: 14 print(obj.group())
分组命名
1 import re 2 3 """ 4 flags 5 re.I 忽略大小写 6 re.M 多行模式,改变^和$的行为 7 re.S .可以匹配任意字符,包括换行符 8 """ 9 regex = r'<dd>.*?title="(?P<title>.*?)".*?</dd>' 10 s = '<dd><a href="#" title="Python中的正则">...</a></dd>' 11 pattern = re.compile(regex, re.S) 12 13 iterator = re.finditer(pattern, s) 14 15 for i in iterator: 16 print(i.group('title'))
或匹配
1 import re 2 3 """ 4 取消分组 5 (?:) 6 或匹配 7 long|short 8 """ 9 regex = r'www.(?:page|hopen).com' 10 s = 'www.hopen.com' 11 pattern = re.compile(regex) 12 13 iterator = re.finditer(pattern, s) 14 15 for i in iterator: 16 print(i.group())
贪婪匹配与惰性匹配
1 import re 2 3 4 def get_data(regex, s): 5 pattern = re.compile(regex) 6 obj = re.search(pattern, s) 7 if obj: 8 return obj.group() 9 10 11 # 贪婪匹配 12 regex_greedy = r'<.*>' 13 # 惰性匹配 14 regex_lazy = r'<.*?>' 15 content = '<a href="#">...</a>' 16 17 ret_1 = get_data(regex_greedy, content) 18 ret_2 = get_data(regex_lazy, content) 19 print(ret_1) # <a href="">...</a> 20 print(ret_2) # <a href="">
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:python基础之数据的三大结构
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash