python re模块compile_Python模块-re模块,正则表达式

==详细正则表达式字符请参考,博文《正则表达式字符说明》==

re模块用法

import re

re.findall("正则语句","字符串")

基本元字符

释义

.

匹配任意字符

^

匹配开头字符

$

匹配结束字符

*

匹配前一个字符0到无限次

+

匹配前一个字符1到无限次

?

匹配前一个字符0到1次

?:

取消匹配优先级

()

匹配元字符分组

{}

匹配前一个字符指定的次数

[]

字符集,字符集中"[-]"表示范围,"[\]"表示转义"[^]"表示取反

|

或匹配

==注意:多字符匹配【贪婪匹配】转变为惰性匹配在匹配后加"?"==

特殊元字符

释义

类表示方式

\d

匹配任何十进制数字

[0-9]

\D

匹配任何非数字字符

[^0-9]

\s

匹配任何空白字符

[\t\n\r\f\v]

\S

匹配任何非空白字符

[^\t\n\r\f\v]

\w

匹配任何字母或数字字符

[a-zA-Z0-9_]

\W

匹配任何非字母或数字字符

[^a-zA-Z0-9_]

\b

匹配一个特殊字符便捷,比如空格,&,#等

普通匹配示例

#-*- coding:utf8 -*-

import re

txt = "(abcabcabc)"

a = re.findall("(abc)",txt)

print(a)

b = re.findall("(abc)+",txt)

print(b)

c = re.findall("(?:abc)+",txt)

print(c)

d = re.search("(abc)",txt)

print((d).group())

['abc', 'abc', 'abc']

['abc']

['abcabcabc']

abc

re模块方法

re.findall()

查找所有符合条件的字符,返回的是列表

# -*- coding:utf8 -*-

import re

txt = ("abcabcabc")

a = re.findall("(abc)",txt) #条件匹配

print(a) #打印返回值

['bc', 'bc']

re.finditer()

查找所有符合条件的字符,返回的是迭代器对象

#-*- coding:utf8 -*-

import re

txt = ("abcabcabc")

a = re.finditer("(abc)",txt) #条件匹配

print(a) #打印返回值为迭代器对象

print(a.__next__()) #返回的对象

print((a.__next__()).group()) #返回的对象的值

abc

re.search()

搜索符合条件的第一个字符,返回的是对象

# -*- coding:utf8 -*-

import re

txt = ("abcabcabc")

b = re.search(("abc"),txt) #条件匹配

print(b) #返回的对象

print(b.group()) #返回对象对应的值

<_sre.sre_match object span="(1," match="bc"> #返回的对象

bc #返回的对象对应的值

分组示例

# -*- coding:utf8 -*-

import re

txt = ("abc123bbc456ddc678")

c = re.search("bc[0-9]+",txt).group() #搜索并打印字母加数字

print(c)

d = re.search("(?Pbc)[0-9]+",txt).group("name") #将字母和数字分开做分组处理并只打印分组部分

print(d)

bc123 #未分组显示结果

bc #分组后显示分组结果

re.match()

只会从开始匹配

示例

# -*- coding:utf8 -*-

import re

txt = ("abc123bbc456ddc678")

print(re.match("123",txt)) #只匹配开头不符合匹配规则返回空

print(re.match("\w*",txt)) #返回匹配结果对象

print(re.match("\w*",txt).group()) #输出返回结果对象对应的值

None #匹配不到返回的结果

<_sre.sre_match object span="(0," match="abc123bbc456ddc678"> #返回的对象

abc123bbc456ddc678 #返回对象的值

re.split()

分割匹配

import re

txt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")

print(re.split("\|",txt))

['小明:74分', '小刚:68分', '小花:90分', '小莉:85分']

re.sub()

匹配替换

#-*- coding:utf8 -*-

import re

txt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")

print(re.sub("小","大",txt)) #匹配并替换

print(re.sub("\d+","未知",txt)) #匹配并替换

print(re.sub("\d+","未知",txt,2)) #匹配前两次

大明:74分|大刚:68分|大花:90分|大莉:85分

小明:未知分|小刚:未知分|小花:未知分|小莉:未知分

小明:未知分|小刚:未知分|小花:90分|小莉:85分

re.subn()

匹配替换,显示匹配替换的次数,返回元组

#-*- coding:utf8 -*-

import re

txt = ("小明:74分|小刚:68分|小花:90分|小莉:85分")

print(re.subn("小","大",txt)) #匹配并替换

('大明:74分|大刚:68分|大花:90分|大莉:85分', 4)

re.compile()

自定义规则

规则名称:re.compile(匹配内容)

示例

#-*- coding:utf8 -*-

import re

txt = "awdfwf23423bgre5345"

test = re.compile("\d+")

print(test.findall(txt))

['23423', '5345']

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值