加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式

发布时间:2020-12-14 06:11:53 所属栏目:百科 来源:网络整理
导读:? import re patten = re.compile(r".") ? //将正则表达式的字符串编译为一个对象 r0 = patten.manth("f") ? ? //使用正则表达式的对象匹配指定字符串, 匹配成功返回匹配到的字符的下标 span(0,1) ,否则返回None ---------- 匹配单个字符与数字 ---------

?

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 匹配任意的空白符(空格,回车,换行,制表,换页),效果同[ rntf]
S 匹配任意的非空白符,效果同[^ fnrt]

?

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

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

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"
#需求:将其中的空格替换为-连接所有的单词

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读