我需要找到一个正则表达式来定义所有二进制字符串的语言,该字符串在长度为4的每个子字符串中最多为1 。
接受的字符串:0001000100
拒绝的字符串:100010100
我当前的尝试是:((0 *)(1){0,1}(0 *)){4} 。尽管对于每个正则表达式测试站点而言,这都是不正确的,但我对正则表达式并不陌生,这并不奇怪。
我认为该语言是常规语言,因此,我被要求寻找一个正则表达式来定义它,以及NFA和DFA可以确定的每种语言的流程。但是,我正在努力提出一个定义该语言的正则表达式。
答案 0 :(得分:0)
此正则表达式似乎定义了您想要的语言,在四个字符中不会出现两个1。
^0*(?:10{3,})*1?0*$
说明:
^
-字符串的开头0*
-一个或多个零(?:10{3,})*
-匹配文字1
,然后匹配至少三个或多个零,并且整个零或多次1?0*
-(可选)在文字1
之后,然后是零个或多个零点。$
-字符串结尾