Ciao ho un problema nell'eseguire uno split di una stringa.

Ho una funzione che prende in input una stringa che può avere due formati, per esempio:

1- "a,b,h c = red ,true"
2- "f,p,h c = red , d = blue ; e = black ,false"

la parte in rosso si compone sempre con h all'inizio e poi numero qualsiasi di coppie letttera=colore separati da una , o da un ; a seconda dei casi.

le due stringhe devono essere quindi divise in questo modo:

1-
a
b
h c=red
true

2-
f
p
h c = red , d = blue ; e = black
false

inizialmente usavo il metodo split in questo modo:

str.split(",");

ma con il secondo formato ovviamente separa in maniera errata. E' necessario cambiare l'espressione regolare passata come argomento di split ma non riesco a scrivere quella corretta potete aiutarmi? grazie