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

匹配以0开头结尾为110/111且不含000的比特序列正则如何写

正确正则实现方案

你需要的正则表达式如下:

import re
pat = re.compile(r'0(?:(?!000)[01])*?(?:110|111)')

正则逻辑说明

  • 开头固定匹配0,满足序列以0开头的要求
  • (?:(?!000)[01])*? 是非捕获组,作用为:
    • 每次匹配1位0或1前,通过负向先行断言(?!000)保证后续不会出现000子串,满足序列无000的约束
    • 非贪婪量词*?保证匹配到最近的结尾标记就停止,不会出现过度匹配
  • 末尾的(?:110|111)匹配结尾要求,序列必须以110或111收尾

测试验证

对你给出的测试用例执行结果如下:

>>> s = '1000001110001011001101011000010101100001001100001111'
>>> re.findall(pat, s)
['00111', '0010110', '0110', '0110', '001010110', '00100110', '00111']

和你实现的非正则函数f(s)返回的预期结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:06:04