.*? 不理解

.*? 不理解

#!/usr/bin/python


import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:   

   print "matchObj.group() : ", matchObj.group()

   print "matchObj.group(1) : ", matchObj.group(1)

   print "matchObj.group(2) : ", matchObj.group(2)

else:

   print "No match!!"

运行成功

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter


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

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

1回答
慕猿梦 2019-06-13 11:11:40

同学,您好,.号表示匹配除了换行符外的任何字符。*号匹配前面的子表达式零次或多次,等价于 {0,},.*表示匹配除换行符之外的任意字符0次到多次。*、+ 和 ? 的匹配模式是贪婪模式(即会尽可能多的匹配符合规则的字符串);*?、+? 和 ?? 表示启用对应的非贪婪模式。
举个例子:对于字符串 "FishCCC",正则表达式 FishC+ 会匹配整个字符串,而 FishC+? 则匹配 "FishC"。

如果我的回答解决了您的疑惑,望采纳!!^_^ 祝学习愉快~~~~~

  • ? 不是表示匹配0次或一次吗? 怎么变成表示贪婪模式了? ?? 这个写法又表示什么意思?
    2019-07-24 12:01:54
  • 同学,你好。? 表示匹配0次或一次。python中默认是贪婪的。非贪婪操作符"?"可以用在"*","+","?"的后面,要求正则匹配的越少越好。
    2019-07-24 17:08:27
  • .*表示匹配除换行符之外的任意字符0次到多次,.*?非贪婪模式应该是匹配0次,group(2)打印应该是None, 怎么打印了smarter
    2020-01-06 17:04:10
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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