Ich arbeite für mein Compiler Klasse auf einige Hausaufgaben und ich habe folgendes Problem:Ist es möglich, diesen regulären Ausdruck weiter zu vereinfachen?
einen regulären Ausdruck, die eine ungerade Anzahl von enthalten für alle Saiten einer ‚s und b‘ s schreiben a 's oder eine ungerade Anzahl von b' s (oder beide).
Nach vielen Whiteboard Arbeit, die ich mit der folgenden Lösung kam:
(aa|bb)* (ab|ba|a|b) ((aa|bb)* (ab|ba) (aa|bb)* (ab|ba) (aa|bb)*)*
Allerdings ist dies die vereinfacht ist, ich es bekommen kann? Ich habe überlegt, das DFA zu konstruieren, indem ich versuche, die Anzahl der Zustände zu minimieren, um zu sehen, ob es mir helfen würde zu vereinfachen, aber ich dachte, ich würde die Regex-Gurus zuerst nach SO fragen.
Welche erweiterten Funktionen von Regex dürfen Sie verwenden? –
er verwendet reguläre Ausdrücke in der Informatik, nicht PCRE oder Posix Regex;) Sie sind anders. –
@Brad Gilbert, ich nehme an, wir dürfen nur die Regex verwenden, die bisher in dem Buch eingeführt wurde, das nicht viel ist. (*, +,?, |, [], ^). Ziemlich einfach. –