3.2.2 正则表达式的功能(1)

re.search(pattern, string, flags=0)

从一个字符串string任何位置开始匹配正则表达式的字符串pattern,匹配成功返回match对象,如果不成功返回Noneflags是上面介绍的相关标志。

例子:

print('re.search')

result = re.search('mycar\d+','testmycar007\nmycar008\n')

if result:

    print(result)

结果输出如下:

re.search

<_sre.SRE_Match object; span=(4, 12), match='mycar007'>

 

re.match(pattern, string, flags=0)

从字符串string开始位置对正则表达式pattern进行0个或多个字符进行匹配,如果匹配成功返回match对象。如果匹配不成功返回None。值得注意是,当多行标志re.MULTILINE起作用时,re.match()只匹配字符串最开始的字符,而不会匹配换行符开始的字符。如果你想搜索一个字符串任意位置开始的匹配,应使用re.search()。

例子:

print('re.match')

result = re.match('mycar\d+','mycar007\nmycar008\n')

if result:

    print(result)

result = re.match('tmycar\d+','mycar007\nmycar008\n')

if result:

    print(result) 

结果输出如下:

re.match

<_sre.SRE_Match object; span=(0, 8), match='mycar007'>

 

re.fullmatch(pattern, string, flags=0)

这个方法当整个字符串string与正则表达式匹配时返回match对象,否则返回None。此方法不存在部分匹配。

例子:

print('re.fullmatch')

result = re.fullmatch('mycar007','mycar007')

if result:

    print(result)

    

result = re.fullmatch('mycar007','mycar007 ')

if result:

    print(result)

结果输出如下:

re.fullmatch

<_sre.SRE_Match object; span=(0, 8), match='mycar007'>

 

 

re.split(pattern, string, maxsplit=0, flags=0)

根据正则表达式来分割字符串string。如果采用分组模式的正则表达式,那么分隔符作为一组,返回在列表中。如果maxsplit为非零数值,那么把字符串最多分割为maxsplit个元素,剩余的全部组成一个元素。

例子:

print('re.split')

result = re.split('\W+','Cai, cai, cai.')

if result:

    print(result)

result = re.split('(\W+)','Cai, cai, cai.')

if result:

    print(result)

    

result = re.split('\W+','Cai, cai, cai.', 1)

if result:

    print(result)

result = re.split('\W+','Cai, cai, cai.', 2)

if result:

    print(result)

结果输出如下:

re.split

['Cai', 'cai', 'cai', '']

['Cai', ', ', 'cai', ', ', 'cai', '.', '']

['Cai', 'cai, cai.']

['Cai', 'cai', 'cai.']

 

 

re.findall(pattern, string, flags=0)

查找返回非重复匹配的字符串元素的列表。从左向右搜索字符串string,当有匹配成功时,就生成一个列表元素。

例子:

print(r'(.+) \1')

m = re.findall(r'(.+) \1', r'abc abc abcabc 55 56 57 57')

if m:

    print(m) 

结果输出如下:

(.+) \1

['abc', '5', '57']

 

 

re.finditer(pattern, string, flags=0)

在字符串string里按正则表达式pattern来匹配,返回匹配成功的迭代子iterator对象。匹配过程是从字符串string从左向右匹配,当匹配成功之后,就返回相应的对象。当没有匹配成功字符串,就返回空对象。

例子:

print('re.finditer')

for i  in re.finditer('abc', 'abc, abc1, abc2'):

    print(i)

结果输出如下:

re.finditer

<_sre.SRE_Match object; span=(0, 3), match='abc'>

<_sre.SRE_Match object; span=(5, 8), match='abc'>

<_sre.SRE_Match object; span=(11, 14), match='abc'>

 

re.sub(pattern, repl, string, count=0, flags=0)

在字符串string中根据正则表达式pattern匹配,如果匹配成功,就使用repl替换相应的字符串,匹配完成后返回替换后的字符串。count是表示替换最多替换多少个,0是不限。其中repl也可以替换函数,传入一个匹配对象的参数,返回替换的字符串。

例子:

print('re.sub')

result = re.sub('cai', 'replace','Cai, cai, cai.')

if result:

    print(result)

 

def myrepl(matchobj):

    if matchobj.group(0) == 'cai': return 'OK'

    else: return '#'

result = re.sub('cai', myrepl, 'Cai, caicai, cai.',1)

if result:

    print(result)
结果输出如下:

re.sub

Cai, replace, replace.

Cai, OKcai, cai.

 

re.subn(pattern, repl, string, count=0, flags=0)

这个方法的功能与方法sub相同,只不过返回元组对象。元组使用这样的格式(新字符串,多少个替换)。

例子:

print('re.subn')

result = re.subn('cai', 'replace','Cai, cai, cai.')

if result:

    print(result)

结果输出如下:

re.subn

('Cai, replace, replace.', 2)

 

re.escape(string)

本方法是把所有非ASCII字符、数字和下划线以外字符修改为转义方式,也就是添加反斜线在前面。

例子:

print('re.escape')

result = re.escape('cai')

if result:

    print(result)

result = re.escape('cai----_3721中国')

if result:

    print(result)

结果输出如下:

re.escape

cai

cai\-\-\-\-_3721\\

 

re.purge()

清除正则表达式的内部缓存。

例子:

print('re.purge()')

result = re.compile('cai\d')

print(result)

re.purge()

print(result)

结果输出如下:

re.purge()

re.compile('cai\\d')

re.compile('cai\\d')

 

异常re.error

编译一个正则表达式不合法时,会抛出异常错误。

例子:

print('re.error')

try:

    result = re.compile('(cai\d')

except re.error as error:

    print('re:',str(error))

结果输出如下:

re.error

re: unbalanced parenthesis



蔡军生 QQ:9073204 深圳

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值