从语言生成正则表达式
Generating a regular expression from a language
我需要找到一个正则表达式来定义所有长度为4的每个子字符串中最多有一个1的二进制字符串的语言。
接受的字符串:0001000100
拒绝的字符串:100010100
我目前的尝试是:((0*)(1){0,1}(0*)){4}。尽管根据各种正则表达式测试网站的说法是不正确的,但我并不感到惊讶,因为我是正则表达式的新手。
我相信这种语言是正则的,因此我被要求找到一个正则表达式来定义它,以及 NFA 和 DFA,每个我都接受的过程。但是,我正在努力想出一个定义语言的正则表达式。
这个正则表达式似乎定义了您想要的语言,其中四个字符内不会出现两个 1,
^0*(?:10{3,})*1?0*$
解释:
^
- 字符串开始
0*
- 一个或多个零
(?:10{3,})*
- 这匹配文字 1
然后至少三个或更多零和整个它零次或更多次
1?0*
- 可选地跟在文字 1
之后,然后是零个或多个零
$
- 字符串结束
我需要找到一个正则表达式来定义所有长度为4的每个子字符串中最多有一个1的二进制字符串的语言。
接受的字符串:0001000100
拒绝的字符串:100010100
我目前的尝试是:((0*)(1){0,1}(0*)){4}。尽管根据各种正则表达式测试网站的说法是不正确的,但我并不感到惊讶,因为我是正则表达式的新手。
我相信这种语言是正则的,因此我被要求找到一个正则表达式来定义它,以及 NFA 和 DFA,每个我都接受的过程。但是,我正在努力想出一个定义语言的正则表达式。
这个正则表达式似乎定义了您想要的语言,其中四个字符内不会出现两个 1,
^0*(?:10{3,})*1?0*$
解释:
^
- 字符串开始0*
- 一个或多个零(?:10{3,})*
- 这匹配文字1
然后至少三个或更多零和整个它零次或更多次1?0*
- 可选地跟在文字1
之后,然后是零个或多个零$
- 字符串结束