Python正则表达式_常用匹配方法search

2022-10-19 07:55:42

正则匹配方法之search

一、pattern.search()方法
语法: search(string=None, pos=0, endpos=9223372036854775807, *, pattern=None)
函数作用: 在string[pos,endpos]区间从pos处开始匹配pattern,如果匹配成功,返回匹配成功的Match对象;如果未成功,将pos加1后重新尝试匹配,直到pos=endpos时仍无法匹配则返回None。
参数说明:
**string:**被匹配的字符串
pos: 匹配的起始位置,可选,默认为0
endpos: 匹配的结束位置,可选,默认为len(string)
也就是说如果不指定pos和endpos的话,该方法会扫描整个字符串匹配到的Match对象,使用其group()方法取出匹配结果
与pattern.match()的区别:
match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败返回None;而search搜索整个字符串,直到知道的一个匹配。

# 1、不指定区间匹配
import re 
#匹配多个数字,最多一个空格,0个或多个单词字符(字母和数字)
# *是贪婪匹配(多个),?是抑制贪婪(0或1个)
p=re.compile(r'\d+\s?\w*')
#不指定匹配区间
aa = p.search('1eebr13Abc13')
if aa:
      print ('匹配的内容是:', aa.group())
else:
      print ("正则表达式没有匹配到内容")

# 返回结果: 匹配的内容是: 1eebr13Abc13

# 2、指定区间匹配
#指定匹配区间,在第1个到第10个字符之间匹配
bb = p.search('353 sgsdg46fhsfwe55d',1,10)
if bb:
      print ('匹配的内容是:', bb.group())
else:
      print ("正则表达式没有匹配到内容")

# 返回结果:匹配的内容是: 53 sgsdg4

小结论: 指定区间时,区间是前闭后开,即含前不含后。

二、re.search()方法
语法: search(pattern, string, flags=0)
函数作用: 扫描整个字符串并返回第一次成功的匹配对象,如果匹配失败返回None
参数说明:
pattern: 匹配的正则表达式
string: 被匹配的字符串
flags: 标志位,用于控制正则表达式的匹配方式,如是否区分大小写,是否匹配多行等
与pattern.search的区别:
不能指定匹配的区间pos和endpos

# 例子:匹配样式为“abc中任一字母+一个星号(*)+两个数字”的字符
#encoding=utf-8
import re
m = re.search(r'[abc]\*\d{2}','a*2345')
m.group()  # 返回'a*23'
mm = re.search(r'[abc]\*\d{2}','ac*2345')
mm.group()  # 返回 'c*23'
  • 作者:小菜鸡也会有春天
  • 原文链接:https://blog.csdn.net/weixin_50640351/article/details/115471138
    更新时间:2022-10-19 07:55:42