我尝试过(^.*(?0){2}.*$)
来捕获0,但不知道如何捕获1的
因此,对于以下数据:
00
110
100
11110011
00111101
00101010
11000000
00000001
10000000
将返回的为100、00000001和10000000
如果你的字符只是0
s和1
s,就像你的例子一样,你可以做:
^(0+10+|100+|0+01)$
这是一个演示。
试试这个正则表达式:
^(?=.*0.*0.*)(?=.*1.*)(?!.*1.*1.*).*$
与相同
^(?=.*0.*0.*)(?=[^1]*1[^1]*$).*$
使用前瞻性断言:
- 至少2个
zero
- 至少1个
one
- 最多1个
one
演示
使用此模式
^(?=(?:.*0){2})(?=[^1]*1[^1]*$)([01]*)$
^
起锚(?=(?:.*0){2})
前瞻至少两个0(?=[^1]*1[^1]*$)
只在最后查找一个"1"([01]*)
捕获任意数量的0和1,或根据需要更改为(d*)
$
端锚
Demo
使用负前瞻筛选出具有两个1或零或一个0:的行
^(?!.*1.*1|[^0]*(0[^0]*)?$)
它适用于任何数字组合。
^(?=[02-9]*1[02-9]*$)d*0d*0d*$
演示