python正则表达式模块re--compile,match,search(2)

re.compile(pattern, flags)

  • 将正则表达式pattern编译成pattern对象,并返回该对象,可以调用match, search等方法来匹配各种字符串。
  • 直接用pattern不是更方便吗,我认为,使用compile的方式,可以加上flags,比如忽略大小写。
  • 感觉有点鸡肋就是了,其他的match, search等等都可以实现flags功能
  • 优点:经常使用的正则表达式编译成正则表达式对象,这样可以提高一定的效率
  • pattern.match(string, pos, endpos), 返回匹配到的字符串对象,pos表示开始匹配的字符起始位置,endpos表示结束位置,一般可以不设置,通过.group()获得匹配到的内容,使用.string属性获得包含匹配内容的完整文本内容。
import re

# 将正则表达式编译成Pattern对象
pattern = re.compile(r'hello')

# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = pattern.match('hello world!')

if match:
# 使用Match获得分组信息
    print(match.group())

hello

re.match(pattern, string, flags)

  • 传入正则表达式pattern
  • 传入被匹配的字符串string
  • 设定匹配的属性flags
  • 返回的是匹配到的对象,需要通过.group()来查看匹配到的内容, 使用.string属性获得包含匹配内容的完整文本内容。
m = re.match(r'hello', 'Hello, world!!!', flags=re.IGNORECASE)
print(m)
print(m.string)
print(m.group())

<_sre.SRE_Match object; span=(0, 5), match=‘Hello’>
Hello, world!!!
Hello

与pattern.match()区别:

  • re.match()没有pos, endpos指定字符串开始结束的位置的参数

pattern. search()方法
函数作用:

该方法的作用是在string[pos, endpos]区间从pos下标处开始匹配pattern,如果匹配成功,返回匹配成功的Match对象;

如果没有匹配成功,则将pos加1后重新尝试匹配,直到pos=endpos时仍无法匹配则返回None。

参数说明:

string:被匹配的字符串

pos:匹配的起始位置,可选,默认为0

endpos:匹配的结束位置,可选,默认为len(string)

也就是说如果不指定pos和endpos这两个参数的话,该方法会扫描整个字符串。

例子:

pattern=re.compile("\d+\w*")
pattern.search("12abc123ABc123",0,10).group()

‘12abc123AB’

pattern.search("12abc123ABc123",0,9).group()

‘12abc123A’

re.search方法:
扫描整个字符串并返回第一次成功的匹配对象,如果匹配失败,则返回None。

参数说明:

pattern:匹配的正则表达式

string:要匹配的字符串

flags:标志位,用于控制正则表达式的匹配方式。如是否区分大小写、是否多行匹配等。

re.search(r"[abc]\*\d{2}","12a*23Gb*12ab").group()

‘a*23’

re.search()方法与pattern.search()方法区别:
re.search()不能指定匹配的区间pos和endpos两个参数。

re.match与re.search的区别:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,并返货None;

而re.search匹配整个字符串,直到找到一个匹配。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值