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

如何用正则表达式正确识别二进制字符串中1之间的最长连续0序列?

解决二进制字符串中1之间最长连续0序列的正则方案

问题根源

你之前使用的1[0]+1和(10*)1存在一个关键缺陷:匹配时会消耗掉末尾的1,导致后续匹配无法复用这个1作为下一个0序列的开头标记。比如处理二进制10010001时,第一个匹配1001后,剩余字符串为0001,没有开头的1可供匹配,自然漏掉了000这个更长的目标序列。

正确正则表达式

使用零宽断言匹配前后被1包裹的0序列,这种方式不会消耗任何字符,所有符合条件的0序列都能被完整捕获:

(?<=1)0+(?=1)
  • (?<=1):正向后顾断言,确保0序列的前一位是1
  • 0+:匹配一段连续的1个或多个0
  • (?=1):正向前瞻断言,确保0序列的后一位是1

验证场景

  • 数字7(二进制111):无匹配结果,最长0序列长度为0
  • 数字5(二进制101):匹配到0,最长长度为1
  • 数字10(二进制1010):匹配到0,最长长度为1
  • 数字145(二进制10010001):匹配到00和000,最长长度为3

落地步骤

  1. 将目标数字转为纯二进制字符串(注意去除语言自带的前缀,比如Python中bin(145)返回0b10010001,需截取[2:]部分)
  2. 用上述正则匹配所有符合条件的0序列
  3. 遍历匹配结果,计算每个序列的长度并取最大值;若无匹配结果则返回0

内容的提问来源于stack exchange,提问作者Saurabh Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 06:34:57