正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于Python来说并不是独有的。但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别。
正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。
Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。
re 模块使 Python 语言拥有全部的正则表达式功能。
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
1、查找第一个匹配串
import re s='i love python very much' pat='python' r=re.search(pat,s) print(r.span())#(7,13)
2、查找所有1
import re s='山东省潍坊市青州第1中学高三1班' pat='1' r=re.finditer(pat,s) for i in r: print(i) # <re.Match object; span=(9, 10), match='1'> # <re.Match object; span=(14, 15), match='1'>
3、\d匹配数字[0-9]
import re s='一共20行代码运行时间13.59s' pat=r'\d+'#+表示匹配数字(\d表示数字的通用字符)1次或多次 r=re.findall(pat,s) print(r) #['20','13','59']
我们想保留13.59而不是分开,请看4
4、"htmlcode">
6、re.I 忽略大小写 7、使用正则提取单词 这是不准确版本,请参看第9个 8、只捕获单词,去掉空格 使用()捕获,这是不准确版本,请参看第9个 9、补充上第一个单词 上面第8,看到提取单词中未包括第一个单词,使用"htmlcode">
11、提取以m或t开头的单词,忽略大小写 下面出现的结果不是我们想要的,原因出在 "htmlcode">
13、先分割,再查找满足要求的单词 使用match表示是否匹配 14、贪心匹配 尽可能多的匹配字符 15、非贪心匹配 与14相比,仅仅多了一个问号("htmlcode">
与14比较可知,贪心匹配和非贪心匹配的区别,后者是字符串匹配后立即返回,见好就收。 16、含有多种分割符 使用split函数 17、替换匹配的子串 sub函数实现对匹配子串的替换 18、爬取百度首页标题 19、常用元字符总结 . 匹配任意字符 20、常用通用字符总结 \s 匹配空白字符 以上就是Python中正则模块的基本使用总结,里面有循序渐进的优化分析过程,这些虽然是中间过程,但是对于正则小白而言,了解这些很有必要。笔者对于正则的理解也比较肤浅,如有总结不到位之处,恳请指正。
import re
s='一共20行代码运行时间13.59s'
pat=r'\d+\."htmlcode">
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'^[emrt]' #查找以
r=re.findall(pat,s)
print(r)
# [],因为字符串的开头是字符`T`,不在emrt匹配范围内,所以返回为空
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'^[emrt]' #查找以
r=re.compile(pat,re.I).search(s)
print(r)
# <re.Match object; span=(0, 1), match='T'> 表明字符串的开头在匹配列表中
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'\s[a-zA-Z]+'
r=re.findall(pat,s)
print(r) #[' module', ' provides', ' regular', ' expression', ' matching', ' operations', ' similar', ' to', ' those', ' found', ' in', ' Perl']
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'\s([a-zA-Z]+)'
r=re.findall(pat,s)
print(r)
#['module', 'provides', 'regular', 'expression', 'matching', 'operations', 'similar', 'to', 'those', 'found', 'in', 'Perl']
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'\s"htmlcode">
import re
s = 'This module provides regular expression matching operations similar to those found in Perl'
pat = r'\s+'
r = re.split(pat,s)
print(r)
#['This', 'module', 'provides', 'regular', 'expression', 'matching', 'operations', 'similar', 'to', 'those', 'found', 'in', 'Perl']
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'\s"htmlcode">
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'^([mt][a-zA-Z]*)\s' # 查找以
r=re.compile(pat,re.I).findall(s)
print(r)
#['This']
import re
s='This module provides regular expression matching operations similar to those found in Perl'
pat=r'\s+'
r=re.split(pat,s)
res=[i for i in r if re.match(r'[mMtT]',i)]
print(res)
#['This', 'module', 'matching', 'to', 'those']
import re
content='<h>ddedadsad</h><div>graph</div>bb<div>math</div>cc'
pat=re.compile(r"<div>(.*)</div>") #贪婪模式
m=pat.findall(content)
print(m)
#['graph</div>bb<div>math']
import re
content='<h>ddedadsad</h><div>graph</div>bb<div>math</div>cc'
pat=re.compile(r"<div>(.*") #贪婪模式
m=pat.findall(content)
print(m)
#['graph', 'math']
import re
content = 'graph math,,english;chemistry' #这种
pat=re.compile(r"[\s\,\;]+") #贪婪模式
m=pat.split(content)
print(m)
#['graph', 'math', 'english', 'chemistry']
import re
content="hello 12345, hello 456321"
pat=re.compile(r'\d+') #要替换的部分
m=pat.sub("666",content)
print(m)
#hello 666, hello 666
import re
from urllib import request
#爬虫爬取百度首页内容
data=request.urlopen("http://www.baidu.com/").read().decode()
#分析网页,确定正则表达式
pat=r'<title>(.*"color: #ff0000">下面是知识点分享
^ 匹配字符串始位置
$ 匹配字符串中结束的位置
* 前面的原子重复0次1次多次
? 前面的原子重复一次或者0次
+ 前面的原子重复一次或多次
{n} 前面的原子出现了 n 次
{n,} 前面的原子至少出现 n 次
{n,m} 前面的原子出现次数介于 n-m 之间
( ) 分组,需要输出的部分
\w 匹配任意字母/数字/下划线
\W 和小写 w 相反,匹配任意字母/数字/下划线以外的字符
\d 匹配十进制数字
\D 匹配除了十进制数以外的值
[0-9] 匹配一个0-9之间的数字
[a-z] 匹配小写英文字母
[A-Z] 匹配大写英文字母
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
- 2024罗志祥《舞狀元》[FLAC/MP3][1G]
- 张美玲侯俊辉1999-福建情歌对唱[南方][WAV+CUE]
- 江希文.1994-伝说少女(饿狼伝说动画原声大碟)【嘉音】【WAV+CUE】
- 黄思婷2020-风中泪[豪记][WAV+CUE]
- 刘韵.1998-DENON.MASTERSONIC系列【EMI百代】【WAV+CUE】
- 群星.2024-你的谎言也动听影视原声带【韶愔音乐】【FLAC分轨】
- 群星.2003-难忘的影视金曲·港台篇【正大国际】【WAV+CUE】
- 试音天碟《原音HQCD》风林 [WAV+CUE][1.1G]
- 李思思《喜欢你》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]
- 王杰《这场游戏那场梦》 台湾华纳首版 [WAV+CUE][1G]
- 群星2005-《影视红声》2CD香港首版[WAV+CUE]
- 群星2017《聆听中国.风华国乐》试音碟[WAV+CUE]
- 群星2016-《环球词选.潘源良》环球[WAV+CUE]
- 张惠妹《爱的力量》10年情歌最精选 2CD[WAV+CUE][1.1G]
- 群星2009《LOVE TV情歌精选VOL.2》香港首版[WAV+CUE][1.1G]