标签:大小写 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