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组成?您的答案似乎正确:)