Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 我需要一些帮助来缩短这个正则表达式_Regex - Fatal编程技术网

Regex 我需要一些帮助来缩短这个正则表达式

Regex 我需要一些帮助来缩短这个正则表达式,regex,Regex,我目前正在尝试进入学校的正则表达式课程,必须完成缩短此正则表达式的任务: r = 0(e + 0 + 1)* + (e + 1)(1 + 0)* + e e是一个空单词epsilon 到目前为止,我做到了: r = 0(0 + 1)* + 1(1 + 0)* + e 考虑到规则 r* = (e + r)* 然而,我真的不知道如何继续。如果不是kleene星算符,我可以使用分布定律,但这不适用于这里。我真的想不出一个合适的法律来继续使用这个正则表达式 有什么有用的建议吗 编辑: 我想我更进了

我目前正在尝试进入学校的正则表达式课程,必须完成缩短此正则表达式的任务:

r = 0(e + 0 + 1)* + (e + 1)(1 + 0)* + e
e是一个空单词epsilon

到目前为止,我做到了:

r = 0(0 + 1)* + 1(1 + 0)* + e
考虑到规则

r* = (e + r)*
然而,我真的不知道如何继续。如果不是kleene星算符,我可以使用分布定律,但这不适用于这里。我真的想不出一个合适的法律来继续使用这个正则表达式

有什么有用的建议吗

编辑:

我想我更进了一步形成了r到

r = 0(1 + 0)* + 1(1 + 0)* + e
然后能够将其组合到

r = (0 + 1)(0 + 1)* + e
对吗

还有,我们可以说

r = (0+1)*

这应该是最后的形式

我想说你自己的推论是正确的,除了一件事。拿着你的原稿

r = 0(e + 0 + 1)* + (e + 1)(1 + 0)* + e
删除e,根据您的说法是空的,留下

r = 0(0 + 1)* + 1(1 + 0)*
或者简单地说,0后跟任意数量的0或1,或者
1后跟任意数量的1或0。
因此左侧表示必须至少有一个
0
,右侧表示必须有一个
1
。这意味着必须至少有一个
0
1
。现在,你的regex风格是我从未见过的,所以我不知道如何用你的风格来表达一个或多个
(通常是
+
),所以我将用常规regex来表达它,这将是

r = [01]+
这意味着至少有一个
重复了任意次数的0或1次


问候。

所以,“+”符号在任何情况下都表示“或”,对吗?您的语言由1和0组成?您的答案似乎正确:)