码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2018-12-18 02:24:00      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:大小写   span   识别   否则   非贪婪   ant   col   find   正则   

 

import re

patten = re.compile(r".")   //将正则表达式的字符串编译为一个对象

r0 = patten.manth("f")    //使用正则表达式的对象匹配指定字符串,

匹配成功返回匹配到的字符的下标 span(0,1) ,否则返回None

----------匹配单个字符与数字---------

. 匹配除换行符以外的任意字符

#匹配数字
[0123456789] []是字符集合,表示匹配方括号中所包含的任意一个字符
[0-9] 匹配任意数字,类似[0123456789]
\d 匹配数字,效果同[0-9]

#匹配字母
[hfjsghe] 匹配good中任意一个字符
[a-z] 匹配任意小写字母
[A-Z] 匹配任意大写字母

#匹配数字和字母
[0-9a-zA-Z] 匹配任意的数字和字母


#匹配数字,字母,_
[0-9a-zA-Z_] 匹配任意的数字、字母和下划线
\w 匹配数字,字母和下划线,效果同[0-9a-zA-Z_]


[^abc] 匹配除了good这几个字母以外的所有字符,中括号里的^称为脱字符,表示不匹配集合中的字符


[^0-9] 匹配所有的非数字字符
\D 匹配非数字字符,效果同[^0-9]


[^0-9a-zA-Z_]
\W 匹配非数字,字母和下划线,效果同[^0-9a-zA-Z_]


\s 匹配任意的空白符(空格,回车,换行,制表,换页),效果同[ \r\n\t\f]
\S 匹配任意的非空白符,效果同[^ \f\n\r\t]

 

--------------锚字符(边界字符)-------------

^ 行首匹配,和在[]里的^不是一个意思
$ 行尾匹配

\A 匹配字符串开始,它和^的区别是,\A只匹配整个字符串的开头,即使在re.M模式下也不会匹配它行的行首
\Z 匹配字符串结束,它和$的区别是,\Z只匹配整个字符串的结束,即使在re.M模式下也不会匹配它行的行尾


\b 匹配一个单词的边界,也就是值单词和空格间的位置
\B 匹配非单词边界

 

 

-------------------匹配多个字符------------------------

 

说明:下方的x、y、z均为假设的普通字符,n、m(非负整数),不是正则表达式的元字符
(xyz) 匹配小括号内的xyz(作为一个整体去匹配)

 

x? 匹配0个或者1个x
x* 匹配0个或者任意多个x(.* 表示匹配0个或者任意多个字符(换行符除外))
x+ 匹配至少一个x

 


x{n} 匹配确定的n个x(n是一个非负整数)
x{n,} 匹配至少n个x
x{n,m} 匹配至少n个最多m个x。注意:n <= m

 


x|y   |表示或,匹配的是x或y

 

总结:
|:两边的正则表达式是或者的关系,在匹配的过程中,只要有其中的一个满足即可
():是一个整体
注意:在书写正则表达式的时候,不要随意添加空格

 


-------------------子模式------------------------

#正则表达式中的()表示一个整体,另外一个用法用于表示子模式【如果在一个正则表达式中出现需要重复校验的内容,
# 后面出现的就可以直接使用前面书写号的正则表达式,识别的方式为(),从左往右依次给()编号,分别1,2.。。所以,子模式
# 使用\1.\2....的方式表示】
pattern = re.compile(r"<([a-z]+)><(\w+)>\w*</\2></\1>")
r0 = pattern.search("<div><span>hello</span></div>")

print(r0.group()) 整个正则表达式匹配到的内容
print(r0.group(1)) 第一个子模式匹配到的内容
print(r0.group(2)) 第二个子模式匹配到的内容


-------------------贪婪和非贪婪------------------------

?: 非贪婪
+: 贪婪
*: 贪婪

 

-------------------模式修正------------------------

#1.re.I :ignorecase 忽略大小写进行匹配

#2.re.M,more,多行模式

 

-------------------re模块中的常用函数------------------------

#1.compile():编译,将正则表达式的字符串编译为一个对象
#辅助其他函数的使用

 

#2.match(),匹配
#如果匹配上,则返回匹配到的对象,如果匹配不上,则返回一个None
#r0 = re.match(r"[4-8]","6")

 

#3.search(),搜索,底层的实现使用的match
#只要匹配到第一个,则停止搜索,如果匹配上,得到的结果为一个对象
#r1 = re.search(r"\d+","463423"

 

#4.findall(),搜索全部,
#将所有符合条件的全部搜索出来,返回一个列表
#r2 = re.findall(r"\d+","463423")

 

#5.split():分割
#返回一个列表
#str1 = "one1two1three1four1"
#list1 = str1.split("1")
#print(list1)

 

#6.sub(),替换
#参数:正则表达式【旧的字符串】,新的字符串,原字符串
text = "today is a good day today is a bad day today is a nice day"
#需求:将其中的空格替换为-连接所有的单词

 

正则表达式

标签:大小写   span   识别   否则   非贪婪   ant   col   find   正则   

原文地址:https://www.cnblogs.com/lzzz/p/10134760.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!