You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 2.6.6中Regex匹配失效问题求助

解决Python 2.6.6正则匹配返回None的问题

嘿,这个坑我早年用Python 2.6的时候踩过!问题出在re.match()的行为上,和你在regex测试工具里的默认逻辑不一样:

  • re.match()的特性:它只从字符串的起始位置开始尝试匹配。你的目标文本开头是TK00123456:,并不是Change,所以它直接返回None,根本不会往后查找。
  • 而regex101这类工具默认是全局搜索(对应Python里的re.search()),所以能找到从Change到Working的这段内容。

两种解决方法:

  1. 推荐方案:改用re.search()
    这是最直接的修正,re.search()会遍历整个字符串查找第一个匹配项,和你在regex101上的测试行为完全一致:

    import re
    text = "TK00123456: Change a lot gibberish 16:34. --- access : [ more gibberish Module]( http://somewebsite.com/selectedModuleCode=Support form.aspx longblob) summary --- | Properties | | --- Creator | more gibberish | 16/01/2018 16:26:53 Manager | External Status | Working on Resolution Proper English Text"
    result = re.search(r'(?s)Change(.*?)Working', text)
    if result:
        print(result.group(0))  # 输出完整匹配内容
        print(result.group(1))  # 输出Change和Working之间的部分
    
  2. 如果一定要用re.match()
    可以修改正则表达式,先匹配开头到Change之前的任意内容(注意保留(?s)让.匹配换行):

    result = re.match(r'(?s).*?Change(.*?)Working', text)
    

另外确认一下:Python 2.6.6是支持(?s)这个DOTALL修饰符的,所以你的正则里的换行匹配逻辑没问题,不用调整。

内容的提问来源于stack exchange,提问作者Roy Holzem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:30:02