我想它会是(E0 * 0 * EUE1 * E)?其中 E 是我的字母表的集合,至少有 2 个 0 和至少 1 个 1
问问题
4888 次
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
建议的解决方案是错误的,因为它也会接受000000000
E={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+.*)
以上是自我解释
. 是任何字符 + 是一个或多个
于 2011-10-20T17:29:26.433 回答