Sto lavorando su alcuni compiti per la mia classe del compilatore e ho il seguente problema:È possibile semplificare ulteriormente questa espressione regolare?
Scrivi un'espressione regolare per tutte le stringhe di un 's e b' s che contengono un numero dispari di a o un numero dispari di b (o entrambi).
Dopo un sacco di lavoro lavagna mi si avvicinò con la seguente soluzione:
(aa|bb)* (ab|ba|a|b) ((aa|bb)* (ab|ba) (aa|bb)* (ab|ba) (aa|bb)*)*
tuttavia, è questo è il più semplificata posso farlo? Ho preso in considerazione la costruzione del DFA cercando di ridurre al minimo il numero di stati lì per vedere se mi avrebbe aiutato a semplificare, ma ho pensato di chiedere prima il gergo regex su SO.
Quali sono le funzioni avanzate di regex che è consentito utilizzare? –
usa espressioni regolari in Informatica, non in PCRE o in rexx di posix;) Sono diverse. –
@ Brad Gilbert, presumo che ci sia consentito solo di usare la regex che è stata introdotta finora nel libro che non è molto. (*, +,?, |, [], ^). Abbastanza semplice –