这是我的CS作业的一部分,我一直试图弄清楚它已经有一段时间了。我被要求为语言{0,1}编写一个正则表达式,它只接受最多有3个零的字符串。下面是我提出的但是它不正确,因为零可以递归使用并且超过3次。我的想法是空白的,任何输入都非常感激。谢谢
1*((0^0|0^1|0^2|0^3)|1*)
编辑:我的意思是一般为3个零,它们不一定是连续的,它们很容易连续3个,但事实并非如此。再次感谢
答案 0 :(得分:1)
没有前瞻,你可以使用这样的东西:
^(?:[^0]*0){,3}[^0]*$
只有0和1,这是:
^(?:1*0){,3}1*$
或者,没有{3}
重复:
^(1*0)?(1*0)?(1*0)?1*$
请注意,这将允许空字符串。
解释正则表达式
^ # the beginning of the string
(?: # non-capture group (3 times max):
[^0]* # any character except: '0' (0 or more
# times (matching the most amount
# possible))
0 # '0'
){,3} # end of group
[^0]* # any character except: '0' (0 or more times
# (matching the most amount possible))
$ # before an optional \n, and the end of the
# string
答案 1 :(得分:0)
git push -f origin master --force
是输入集中= {0,1}
答案 2 :(得分:-1)
尝试并准确分解字符串的含义。如果它只包含三个零,而其他所有内容都是1
,1可以采用什么安排?你能找到0个零的独立解决方案,(确切地说)1个零,正好是2个零,正好是3个零吗?
提示是一串0
&{39}和1
可以看作一串单0
个,每个后跟零个或多个1
,或者作为单个1
的字符串,每个后跟零个或多个0
' s 。 (几乎 - 我在这里错过了一些案例。)