包含至少两个0和至少一个1的所有二进制字符串的正则表达式



我想应该是(E0*0*EUE1*E)?其中E是我的字母表的集合,至少有2个0和1个1

试试这个表达式:

^(.*0.*0.*1.*)|(.*0.*1.*0.*)|(.*1.*0.*0.*)$

编辑可以简化为:

^.*(0.*0.*1)|(0.*1.*0)|(1.*0.*0).*$

如果允许使用向前看,我将这样做:(在PHP的自由空格模式下带注释)

$re = '/
    # Binary strings that include at least two 0s and at least one 1.
    ^                  # Anchor to start of string.
    (?=(?:[^0]*0){2})  # at least two 0s. 
    (?=[^1]*1)         # at least one 1.
    [+-]?             # Optional leading sign.
    [01]+              # Match string of binary digits.
    $                  # Anchor to end of string.
    /x';

请注意,您可以在字符串的开头放置任意数量的查找(以逻辑AND方式工作),以指定多个逻辑要求。

建议的解决方案是错误的,因为它也将接受E={0,1}的000000000。注意1*表示任意数量的1[包括无]

E* * (0E*0E*1+0E*1E*0+1E*0E*0) * E*将工作:所有可能的排列0,0,1,并插入E*在任何可能的地方[所以你可以插入任意数量的字符之间/之前所需的元素]。在正则表达式语法中为:.*(0.*0.*1|0.*1.*0|1.*0.*0).*

(.*00+.1+.)|(。* 1+ .* 00+.*)

以上是不言自明的

。是任意字符+是一个或多个

最新更新