正则表达式来梳理出包含至少两个0和最多一个1的字符串



我尝试过(^.*(?0){2}.*$)来捕获0,但不知道如何捕获1的

因此,对于以下数据:

00
110
100
11110011
00111101
00101010
11000000
00000001
10000000

将返回的为100、00000001和10000000

如果你的字符只是0s和1s,就像你的例子一样,你可以做:

^(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*$

演示

相关内容

最新更新