第2关:re 模块中常用的功能函数(一)

任务描述

上一关我们已经接触了re.findall()函数,现在我们继续学习 Python 正则模块中常用的功能函数吧。

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

相关知识

为了完成本关任务,你需要掌握:1.compile()函数,2.match()函数,3.search()函数。

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

compile()函数

编译正则表达式模式,返回一个对象的模式(可以把那些常用的正则表达式编译成正则表达式对象,这样可以提高一点效率)。

格式:re.compile(pattern,flags=0)

 
  1. import re
  2. text = "The moment you think about giving up,think of the reason why you held on so long."
  3. text1 = "Life is a journey,not the destination,but the scenery along the should be and the mood at the view."
  4. rr = re.compile(r'\w*o\w*')
  5. print(rr.findall(text)) #查找text中所有包含'o'的单词
  6. print(rr.findall(text1)) #查找text1中所有包含'o'的单词

运行结果如下:

  • pattern: 编译时用的表达式字符串(即正则表达式);

  • flags:(可选)编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。常用的flags有:

标志含义
re.S(DOTALL)使.匹配包括换行在内的所有字符
re.I(IGNORECASE)使匹配对大小写不敏感
re.L(LOCALE)做本地化识别(locale-aware)匹配,法语等
re.M(MULTILINE)多行匹配,影响^和$
re.X(VERBOSE)该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
re.U根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B

match()函数

在字符串刚开始的位置匹配,在开头匹配到目的字符便返回,如果开头没有目的字符将匹配失败,返回None

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

 
  1. print(re.match('edu','educoder.net').group())
  2. print(re.match('edu','www.educoder.net').group())

运行结果如下: 

注:match()函数返回的是一个match object对象,而match object对象有以下方法:

  • group():返回被正则匹配的字符串;
  • start():返回匹配开始的位置;
  • end():返回匹配结束的位置;
  • span():返回一个元组包含匹配 (开始,结束) 的位置;
  • groups():返回正则整体匹配的字符串,可以一次输入多个组号,对应组号匹配的字符串。

search()函数

re.search()函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回。如果字符串没有匹配,则返回None

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

  1. print(re.search('edu','www.educoderedu.net').group())
  2. print(re.search('eduaaa','www.educoderedu.net').group())

运行结果如下:

注:match()search()比较类似,它们的区别在于match()只匹配字符串的开头,如果开头没有出现目的字符串,即使后面出现了也不会进行匹配;search()函数会在整个字符内匹配,只要找到一个目的字符串就返回。

编程要求

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

  • compile方法,匹配测试输入字符串text中所有含字母i的单词;
  • 在字符串起始位置匹配字符The是否存在,并返回被正则匹配的字符串;
  • 在整个字符串查看字符is是否存在,并返回被正则匹配的字符串。

测试说明

平台会对你编写的代码进行测试:

测试输入:

  1. There is a time in life that is full of uneasiness.We have no other choice but to face it.`

预期输出:

  1. ['is', 'time', 'in', 'life', 'is', 'uneasiness', 'choice', 'it']
  2. The
  3. is

开始你的任务吧,祝你成功!

import re
text = input()
#********** Begin *********#
#1.用compile方法,匹配所有含字母i的单词
rr = re.compile(r'\w*i\w*')
print(rr.findall(text))

#2.在字符串起始位置匹配字符The是否存在,并返回被正则匹配的字符串
print(re.match('The',text).group())

#3.在整个字符串查看字符is是否存在,并返回被正则匹配的字符串
print(re.search('is',text).group())

#********** End **********#

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

畜牧当道

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

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

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

打赏作者

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

抵扣说明:

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

余额充值