0

(E0*0*EUE1*E) になると思いますか? ここで、E は私のアルファベットのセットで、少なくとも 2 つの 0 と少なくとも 1 つの 1 があります

4

4 に答える 4

2

この式を試してください:

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

編集は次のように簡略化できます。

^.*(0.*0.*1)|(0.*1.*0)|(1.*0.*0).*$
于 2011-10-20T15:47:07.353 に答える
1

先読みの使用が許可されている場合は、次のようにします:(コメント付きの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複数の論理要件を指定するために、文字列の先頭に任意の数の先読みを配置できることに注意してください(論理的に機能します)。

于 2011-10-20T16:08:10.853 に答える
0

000000000E = {0,1}の場合も受け入れるため、提案された解決策は間違っています。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).*

于 2011-10-20T15:49:43.397 に答える
-3

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

上記は自明です

. は任意の文字 + は 1 つ以上

于 2011-10-20T17:29:26.433 に答える