Regex 求正则表达式(a | b)*ab(a | b)的补码*

Regex 求正则表达式(a | b)*ab(a | b)的补码*,regex,Regex,我的练习表上有一个问题,要找出r=(a | b)*ab(a | b)* 我已经想出了一个解决办法,但我不确定它是否正确。请帮我检查并更正错误。我假设a和b是唯一允许的符号 原始表达式与包含ab的任何字符串匹配。补码是不包含ab的任何字符串。换句话说,如果存在一个a,则下一个字符必须是另一个a或字符串的结尾。如果出现b,则必须在所有as之前 结果如下: b*a* 我认为您的表达式与此等价。给定的表达式至少一次重新声明了具有子字符串ab的语言 同样的补码是..不接受子串ab的语言 因此b*a*是正

我的练习表上有一个问题,要找出
r=(a | b)*ab(a | b)*


我已经想出了一个解决办法,但我不确定它是否正确。请帮我检查并更正错误。

我假设
a
b
是唯一允许的符号

原始表达式与包含
ab
的任何字符串匹配。补码是不包含
ab
的任何字符串。换句话说,如果存在一个
a
,则下一个字符必须是另一个
a
或字符串的结尾。如果出现
b
,则必须在所有
a
s之前

结果如下:

b*a*

我认为您的表达式与此等价。

给定的表达式至少一次重新声明了具有子字符串ab的语言 同样的补码是..不接受子串ab的语言


因此b*a*是正确答案

关于最后一行,我的意思是L(~r)=L(b*| baa),因此~r=b*| baa