正则表达式
来源:互联网 发布:网络推广的收费标准 编辑:程序博客网 时间:2024/05/23 13:53
正则表达式读书笔记:
1.元字符
import res=r'abc're.findall(s,'aaaaaaaaaaaaa')res=r"top"st="top tip tqp ywp tep"re.findall(res,st)res=r"t[io]p"re.findall(res,st)res=r"t[^io]p"re.findall(res,st)
1.findall方法
findall()总返回一个列表。如果findall()没有找到匹配的部分,会返回空列表。
如果成功找到匹配的部分,则返回所有匹配部分的列表(按从左到右出现的顺序排列)
[…]匹配字符组里出现的任意一个字符
[.x-y.]匹配从字符x到y中出现的任何一个字符
[^…]取反,不匹配此字符集中出现的任何一个字符
^匹配字符串
r=r”^hello”
s=”hello world,hello boy”
re.findall(r,s)
[‘hello’]
s=”world,hello boy”
re.findall(r,s)
r=r”boy$”
re.findall(r,s)
[‘boy’]”\^abc”
re.findall(r,’^abc ^abc ^abc’)
r=r”x[0-9]x”
re.findall(r,’x1x x2x x9x’)
r=r”x[a-zA-Z0-9]x”
r=r”\d”
re.findall(r,’1234567890’)
r=r”[0-9]”
re.findall(r,’1234567890’)
{N}匹配前面正则表达式出现的次数是N
r=r”^010-\d{8}”
re.findall(r,’010-87654321’)
*匹配前面出现的字符串出现0次或多次
r=r”ab*”
re.findall(r,’a’)
re.findall(r,’ab’)
re.findall(r,’aaaaaaaaa’)
+匹配前面出现的正则表达式一次或多次
r=r”ab+”
re.findall(r,’a’)
re.findall(r,’ab’)
re.findall(r,’abbb’)
?匹配前面出现的正则表达式零次或一次
r=r”^010-?\d{8}$”
re.findall(r,’010–12345678’)
贪婪模式与非贪婪模式:
贪婪模式:
r=r”ab+”
re.findall(r,’abbbbbbbbb’)
[‘abbbbbbbb’]
非贪婪模式:(加问号)
r=r”ab+?”
re.findall(r,’abbbbbbbbb’)
[‘ab’]
{M,N}匹配重复出现M次到N次的正则表达式
r=r”a{1,3}”
re.findall(r,’a’)
re.findall(r,’aa’)
re.findall(r,’aaa’)
\反斜杠后面可以加不同的字符以表示不同特殊意义!
re模块:
re模块将REstring 编译成对象并用它们来进行匹配
编译正则表达式:
!python
import re
p=re.compile(‘ab*’)
print p
不区分大小写:
csvt_re=re.compile(r'csvt',re.I)csvt_re.findall('CSVT')csvt_re.findall('csvt')
正则表达式的方法:
match():决定RE是否在字符串刚开始的位置匹配
search():扫描字符串找到这个RE匹配首次出现的位置
两者返回的都是对象,通过group()方法获得结果
findall()找到RE匹配的所有子串,并把它们作为一个列表返回。
finditer() 找到RE匹配的所有子串,并把它们作为一个迭代器返回
如果没有匹配成功的话,match()和search()将返回None.
如果成功的话,就返回一个’MatchObject’实例
MatchObject实例方法:
group()返回被RE匹配的字符串
start()返回匹配开始的位置
end()返回匹配结束的位置
span()返回一个元祖包含匹配开始结束的位置
帮助文档使用:
help(str.endswith)
help(re.sub)
sub()和subn()将某字符串中所有匹配的正则表达式模式的部分进行替换。
不同在于:替换后的字符串和替换次数的数字作为一个元祖返回。
rs=r’c..t’
re.sub(re,’python’,’csvt caat cvvt cccc’)
re.subn(re,’python’,’csvt caat cvvt cccc’)
字符串的分割:
ip=”1.2.3.4”
ip.spilt(‘.’)
s=”123+456-789*000”
re.split(r’[+-*]’,s)
dir(re) 查看re模块的方法
help(re) 查看re手册
compile编译标志-flags
S 使.匹配包括换行在内的所有字符
I 使匹配对大小写不敏感
M 多行匹配,
X 多行匹配
s="""hello csvtcsvt hellohello csvt hellocsvt hehe"""r=r"^csvt"re.findall(r,s,re.M)email=r"\w{3}@\w+(\.com|\.cn)"re.match(email,'zzz@csvt.com')re.match(email,'zzz@csvt.cn')
re.match(email,’zzz@csvt.org’)
| 在分组中是或的操作
re.findall(email,’zzz@csvt.com’)
优先返回分组的顺序
s=”’hhsdj dskj hello src=csvt yes jdjsds
djhsjk src=123 yes jdsa src=234 yes
hello src=python yes ksa”
”’
r1=r”hello src=(. +) yes”
re.findall(r1,s)
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- Writer输出流写到文件(追加方式)
- OpenCV3.1.0+VS2013配置
- C++第7次作业
- Apache 2.2 安装好后新建任意 PHP 文件访问时返回 500 Internal Server Error 解决方法
- C++第七次作业
- 正则表达式
- Aizu 2170 Marked Ancestor
- C++作业七
- 快速排序
- Swift学习第十一枪-基于协议的MVVM模式的实现
- Activity按两次返回键退出与Activity进入与退出的动画
- 常用树类数据结构总结-二叉查找树(BST),平衡二叉查找树(AVL),红黑树(RBT),B~/B+树(B-tree)的性能分析
- 约瑟夫环问题
- c++第七次上机作业