简化正则表达式

use*_*095 5 regex simplification

我正在进行关于正则表达式的练习,我真的不确定如何做到这一点.

正则表达式是:

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

我对此非常不好,但我认为((a*)(b*))*可以简化为(a ? b)*但是如果这是正确的,那么最后? (a*)只是重复,所以我认为整个表达式可以简化为(a ? b)*.这看起来是否正确?

编辑:∪代表工会

per*_*eal 4

你是对的。(a*b*)*可以匹配 a 和 b 的任意字符串,因此可以(a U b)*,因此它们是等价的。(a U b)*相交a*a*a*子集(a U b)*。因此,整个表达式可以简化为(a U b)*