简化这个正则表达式

Com*_*ner 7 regex simplify

我正在为我的编译器类做一些预考试练习,并且需要简化这个正则表达式.

(a U b)*(a U e)b* U (a U b)*(b U e)a*
Run Code Online (Sandbox Code Playgroud)

很明显,e是空字符串,U代表联合.

到目前为止,我认为其中一个(a U b)*可以被移除,因为U a = a的并集.但是,我找不到任何其他简化,到目前为止其他问题做得不好.:(

感谢任何帮助,非常感谢!

Piv*_*iva 1

正则表达式有点生疏,但如果 * 仍然代表“零次或多次出现”,您可以替换:

(a U e)b* for (a U b)*
Run Code Online (Sandbox Code Playgroud)

其中第一部分为:

(a U b)*(a U b)* = (a U b)*
Run Code Online (Sandbox Code Playgroud)

在右侧,你有那个

(b U e)a* = (b U a)*
Run Code Online (Sandbox Code Playgroud)

现在,由于 a U b = b U a,您可以得到:

(a U b)*(a U b)*
Run Code Online (Sandbox Code Playgroud)

在右侧,只剩下

(a U b)* U (a U b)* = (a U b)*
Run Code Online (Sandbox Code Playgroud)

我想就是这样...