正则表达式最多只需要3个零

时间:2014-06-13 15:48:32

标签: regex

这是我的CS作业的一部分,我一直试图弄清楚它已经有一段时间了。我被要求为语言{0,1}编写一个正则表达式,它只接受最多有3个零的字符串。下面是我提出的但是它不正确,因为零可以递归使用并且超过3次。我的想法是空白的,任何输入都非常感激。谢谢

1*((0^0|0^1|0^2|0^3)|1*)

编辑:我的意思是一般为3个零,它们不一定是连续的,它们很容易连续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}

中最多3个零的RE。
  • =丁苯橡胶封口

答案 2 :(得分:-1)

尝试并准确分解字符串的含义。如果它只包含三个零,而其他所有内容都是1,1可以采用什么安排?你能找到0个零的独立解决方案,(确切地说)1个零,正好是2个零,正好是3个零吗?

提示是一串0&{39}和1可以看作一串单0个,每个后跟零个或多个1,或者作为单个1的字符串,每个后跟零个或多个0' s 。 (几乎 - 我在这里错过了一些案例。)