CYLJ126 2018-09-15 07:55 采纳率: 0%
浏览 492

python正则表达查找问题

贪心和非贪心查找
import re
numreg1 = re.compile(r'(ha){2,4}ll')
numreg2 = re.compile(r'(ha){2,4}?ll') #***为何非贪心查找不生效?***
numreg22 = re.compile(r'ttt(ha){2,4}?')
numreg3 = re.compile(r'(ha){2,4}')
numreg4 = re.compile(r'(ha){2,4}?')
s3 = 'ttthahahahahahahally'
mo1 = numreg1 .search(s3)
mo2 = numreg2 .search(s3)
mo22 = numreg22 .search(s3)
mo3 = numreg3 .search(s3)
mo4 = numreg4 .search(s3)
print(mo1.group())
print(mo2.group())
print(mo22.group())
print(mo3.group())
print(mo4.group())
输出:
hahahahall
hahahahall
ttthaha
hahahaha
haha

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-09-15 12:27
    关注

    贪婪匹配存在方向性,它从左到右尽量少匹配,但是不能把已经匹配的“吐”出来。
    从左往右,找到hahahaha然后才找到ll
    你可以用

     import re
    
    numreg2 = re.compile(r'.*(ha)(?=(ha){2,4}?ll)')
    s3 = 'ttthahahahahahahally'
    mo2 = numreg2.search(s3)
    s4 = mo2.group()
    s4 = s3.replace(s4, "")
    print(s4)
    
    评论

报告相同问题?

悬赏问题

  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教