这串代码的结果为什么是3个单词 ?不太理解这串代码的意思

这串代码的结果为什么是3个单词 ?不太理解这串代码的意思

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕凡 2022-03-01 09:58:46

同学,你好!

1、compile 函数用于编译正则表达式,生成一个 Pattern 对象,可以直接使用Pattern 对象直接调用re模块中的方法传入字符串进行匹配,如下图:

https://img1.sycdn.imooc.com//climg/621d7d64090f018605700216.jpg

2、r'\w+y\b'的匹配规则就是:字母“y”前面的有1个或多个字符(\w+),而“y”后面是单词的边界线(\b是正则表达式规定的一个特殊代码,可以匹配一个单词边界,即单词与空格间的位置),就是匹配到了以y结尾的单词以及\b匹配到单词的边界线,以上单词中以y结尾的单词有:'study', 'every', 'day',所以匹配到了三个单词

祝学习愉快~



  • 那跟r'\w+y$'差在哪裡?


    2022-03-08 10:49:21
  • 同学,你好!

    1、\b是匹配的单词边界,即一个单词边界的位置;

    2、$匹配以某一字符结尾;

    区别如下:

    https://img1.sycdn.imooc.com//climg/6226cc360994783a09440547.jpg

    参考代码:

    import re
    
    s = 'study hard and make progress every day'
    #从study匹配,匹配study后匹配到边界线,hard and make progress不满足匹配条件
    #every和day满足字母“y”前面的有1个或多个字符(\w+),而“y”后面是单词的边界线匹配条件
    res = re.compile(r'\w+y\b', re.I)  # \b为边界
    ret = res.findall(s)
    print(ret)
    #'\w+y$'可以匹配以y字母结尾,但\w+无法匹配day前到空格,所以最终匹配结果是'day'
    res = re.compile(r'\w+y$', re.I)  # $匹配以某一字符结尾
    ret = res.findall(s)
    print(ret)

    祝学习愉快~

    2022-03-08 11:23:48
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师