re 模块中常用的功能函数(二)

任务描述
本关任务:编写代码,匹配相应的内容。

相关知识
为了完成本关任务,你需要掌握:
1.finditer()函数;
2.split()函数;
3.sub()函数;
4.subn()函数。

以下实例均可在命令行窗口中练习。

finditer()函数

搜索字符串,返回一个Match对象的迭代器(包含匹配的开始和结束的位置,如下图中的i所示)。找到正则匹配的所有子串,把它们作为一个迭代器返回。

格式:re.finditer(pattern, string, flags=0);

itext = re.finditer(r'\d+','12 edueduedu44coder deducoder, 11skdh   ds 12')      #匹配所有的数字
for i in itext:
    print(i)
    print(i.group())
    print(i.span())   #span()返回一个元组包含匹配 (开始,结束) 的位置

运行结果如下:
在这里插入图片描述

split()函数

按照能够匹配的子串,将string分割后返回列表。

格式:re.split(pattern, string);

可以使用re.split来分割字符串,如:re.split(r’\s+’, text)将字符串,按空格分割成一个单词列表。

以数字为分割符,将字符串分割:

print(re.split(r'\d+','asas2kdjs4jds5djdfj1djf0'))

运行结果如下:

在这里插入图片描述

sub()函数

使用re替换string中每一个匹配的子串后,返回替换后的字符串。

格式:re.sub(pattern, repl, string, count);

用-替代,如下:

import re
text = "aaa,bbb,ccc,ddd"
print(re.sub(r',', '-', text))

运行结果如下:

在这里插入图片描述

subn()函数

返回替换次数。

格式:subn(pattern, repl, string, count=0, flags=0);
解释:用A替换123中的1,结果为A23,repl就是指的A。

把所有的数字替换为A:

print(re.subn(’\d’,‘A’,‘1asd2dkjf34’))
运行结果如下:
在这里插入图片描述
subn()不仅返回了替换后的字符串,还返回了替换的次数。

编程要求
根据提示,补全右侧编辑器中 Begin 至 End 区间的代码,实现以下功能:

匹配测试输入的字符串text中以t开头的所有单词并显示;
用空格分割句子;
用-代替句子中的空格;
用-代替句子中的空格,并返回替换次数。
测试说明
平台会对你编写的代码进行测试:

平台测试输入:

The moment you think about giving up,think of the reason why you held on so long.`
预期输出:

think
think
the
[‘The’, ‘moment’, ‘you’, ‘think’, ‘about’, ‘giving’, ‘up,’, ‘think’, ‘of’, ‘the’, ‘reason’, ‘why’, ‘you’, ‘held’, ‘on’, ‘so’, ‘long.’]
The-moment-you-think-about-giving-up,-think-of-the-reason-why-you-held-on-so-long.
(‘The-moment-you-think-about-giving-up,-think-of-the-reason-why-you-held-on-so-long.’, 16)
开始你的任务吧,祝你成功!

我的代码:

import re
text = input()
#********** Begin *********#
#1.匹配以t开头的所有单词并显示
itext = re.finditer(r'(\bt\w*)',text)
for i in itext:
    print(i.group())
#2.用空格分割句子
print(re.split(r' ',text))
#3.用‘-’代替句子中的空格 
print(re.sub(r' ','-',text))
#4.用‘-’代替句子中的空格,并返回替换次数
print(re.subn(' ','-',text))
#********** End **********#
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

别是个逗比吧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值