まず、言語の英語の説明に翻訳します。
(a U b)*(a U e)b* U (a U b)*(b U e)a*
翻訳:
asまたはsの任意のシーケンスb、オプションの、、a任意の数のbsが続きます。
また
任意の数のasとbs、その後に任意のb数のasが続くオプションの
ここには多くの重複があります-少なくとも(a U b)*(a U e)、 「 sとsの(a U b)*任意のシーケンス」は必ずまたはイプシロンで終わるため(任意の文字列はイプシロンで終わる可能性があるため)、これらのグループを削除して、aba
(a U b)*b* U (a U b)*a*
翻訳:
asまたはsの任意のシーケンスとb、それに続く任意の数のbs。
また
任意の数のasとbs、任意の数のsがa続く
これで、最も外側のグループへの最初のセクションは同じなので、それらを1つにまとめましょう
(a U b)*(a* U b*)
翻訳:
任意のシーケンスのasまたはbsの後に、任意の数のasまたは任意の数のsが続きbます。
ここで、ちょっと待ってください。「AsとBの任意のシーケンス」は必ずa「 sの任意のシーケンスまたはsの任意のシーケンス」で終わりますb。つまり、最初の部分に一致するものはすべて正規表現全体に一致する可能性があります(2番目の部分はゼロの長さ)だから、私たちはそれを作ってみませんか
(a U b)*
タダ。単純。