正则表达式

 

元字符

.   表示通配符   可以匹配字母数字等符号但是不可以匹配换行符 \n ,   一个.占据一个匹配位置
 
^   表示在字符的开头开始来匹配内容
^a 表示字符串的开头是a才能匹配成功
 
$   匹配字符串末尾的内容
a$  表示末尾是a的才能匹配
 
*  +   表示重复匹配   a*表示匹配0到无数次,a+表示匹配1到无数次    他们匹配是贪婪匹配,就是最多有多少个全部匹配

?  表示只匹配重复的0或1次

? +   *   默认都只匹配在他们前面的一个字符

{}   大括号表示可以指定重复多少次
a{5}  表示a重复五次的   {5,8}  五到八次的     {5,}  五到无穷次
 
 
\ 右斜杠
右斜杠后面跟元字符表示去除特殊功能,变成一个普通符号 \.

右斜杠后面跟普通字符可以实现特殊功能 例如
\d 匹配任何十进制数 相当于[0-9]
\D 匹配任何非数字字符 相当于[^0-9]
\s 匹配任何空白字符 相当于[\t\n\r\f\v]
\S 匹配任何非空白字符 相当于[^\t\n\r\f\v]
\w 匹配任何字母数字字符 相当于[a-zA-Z0-9_] 注意这个\w \W 也可以匹配下划线 _
\W 匹配任何非字母数字字符 相当于[^a-zA-Z0-9_]
\b 匹配一个特殊字符边界 如 空格 & # 等等
 
   \  表示转义,如果 转义符加字符 本身对于python解释器而言还有着其他特殊意义,那么就要再加转义符进行转义 转为普通字符串 去给re模块,如果这个普通字符串对于re来说还有着其他特殊意义,
那么就要再次进行转义  例如:
c=re.findall(r'd\\jh','asd\jh')
print(c) #['d\\jh'] 为什么返回有两个\\ 因为这是经过转义的,在返回给解释器时 又给加了一个 \
 
 
[ ] 字符集  就表示 或 的意思
 
a=re.findall('x[yz]m','xymxzm')
print(a) #['xym', 'xzm']
[a-z]  -在这里表示范围   表示a到z
[^0-9] ^ 在这里表示非 就是只要不是0-9的数字内容全部通过
[\$] \在这里表示转义 将一个具有特殊意义的符号转为一个普通字符处理
在字符集里 只有 ^ \ - 是具有特殊意义的字符号 其他的都当作普通符号处理
 
 
 
 
( )  分组
f=re.search('(?P<name>[a-zA-Z]+)(?P<age>\d+)','Zhu21Liang20')
s=f.group("name") 在这个 (?P<name>[a-zA-Z]+)分 组中 真正在匹配内容的是 [a-zA-Z]+ 而匹配出的内容就放在 name 组中 取值时写上对应的name 就可以把值取出来
print(s)
 
 
| 或
 
 
 
 
 
 
 .findall()     .search()
.findall()方法会返回所有的符合的结果到一个列表里
.search()方法只找到一个符合的就不再找了,返回的是一个对象   如果没有就返回空 。  对象 .group()方法就可以把值取出来    
 
 
.split()  分割方法
h=re.split('[ab]','asdbdf')    先按照 a 分割  再按照 b 分割  
print(h) #['', 'sd', 'df'] 按a分为 " ","sdbdf" 因为a前面没有值所以是一个空 以此类推
 .sub()  替换方法
h=re.sub('\d+','A','as2d5b6d646f')    第一个参数是匹配规则   第二个参数是所要替换的内容    第三个是被查找的字符串
print(h) asAdAbAdAf
 
.compile() 
a=re.compile("匹配规则")
b=a.findall("abvhbvbvjv")
print(b)
 
 分组时会默认先把组里的数据拿出来  此时加上 ?:  就是去除优先级
a=re.findall('www\.(?:baidu|163)\.(?:com|cn)','askwww.baidu.comjfkg')
print(a)


.finditer("\d+","anjbc1njkb312km") 返回的是一个迭代器
 
 
 
 
 
 

 

转载于:https://www.cnblogs.com/nerver-give-up-Lall/p/9695855.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值