regex - 检查正则表达式中捕获组中的最小字符数
问题描述
我对正则表达式有疑问
我只处理数字 0 和 1
我有 10 位数字分为 4 如下
([01]{2})([01]{4})([01]{2})([01]{2})
我需要将所有这些数字与第二组 ([01]{4}) 中的 min 2 1 匹配,无论其他组有多少个 0 或 1。我只对第二组感兴趣
例如,这些是潜在的匹配项
0000110000
0011000000
0001100000
0000110000
我尝试使用积极的前瞻性,例如:
^(\d{2})((?=\d*1{2,}\d*)(\d{4}))(\d{2})(\d{2})
但这甚至是匹配的
0000000011
任何帮助都深表感谢
解决方案
如果这些需要是连续的(根据您的示例数据),也许您可以使用:
^(?=[01]{2,4}11)[01]{10}$
请参阅在线演示。这里的想法是,您可以将 2-4 个零或 1 匹配到由两个 1 组成的序列。如果您意识到唯一允许的组合在恰好 2-4 个其他数字之后具有最少两个 1(“11”)序列,那么这是有道理的。
^
- 开始线锚。(?=[01]{2,4}11)
- 打开积极的前瞻,从我们的字符类中查找 2-4 个字符,直到“11”。[01]{10}
- 匹配我们角色类中的 10 个字符。$
- 结束线锚。
如果需要,您可以更改[01]{10}
使用捕获组的部分。
编辑:
如果它们不必是连续的,也许您可以使用:
^[01]{2}(?=[01]{8}$)([01]{0,2}1[01]{0,2}1[01]{0,2})[01]{4}$
请参阅在线演示。
或者不那么冗长:
^(?=[01]{10}$)(..)(.*1.*1.*)(..)(..)$
查看演示
推荐阅读
- r - 检测被 NaN/NA 模式包围的单个值
- go - Go / Cgo - 如何访问 Cstruct 的字段?
- javascript - 在 mongodb 中使用 Id 删除数据给了我 CastError
- javascript - Applescript / Javascript 无法填充 Safari 输入框
- javascript - 将类扩展到多个类实例Javascript
- java - 如何在 SAML-Authentication 中允许 url 并在 Spring 中使用 Basic-Authentication 验证该 url
- button - Kivy:.py 文件中的按钮绑定
- flutter - 可以在颤振中重用sqlite批处理吗?
- javascript - 无法将对象添加到 javascript 中的空数组
- java - 查找对象数组列表的最大值