Regulární výrazy byly vždycky můj kámen úrazu. Byl bych tedy moc rád, kdyby mi někdo dokázal pomoct.
Potřeboval bych převést řetězec podle následujících pravidel:

Jedná se o text složen s více slov, ale tak že nejsou použity mezery a další slovo vždy začíná velkým písmenem:
např. "StabilizerEffect"
Já potřebuji tento řetězec převést na malá písmena (což samozřejmě umím), ale navíc ještě přidat podtržítka tam kde má být jakoby mezera.
Podle předchozí příkladu má tedy vzniknout "stabilizer_effect".
Aby to však nebylo jednoduché, tak může dojít k situaci, kdy je více velkých písmen za sebou, které se jen přehodí na malé.
např. "RadiationUVAandUVB" -> "radiation_uva_and_uvb"

Pak může ještě nastat dokonce toto: "IndexEEIEffect" -> "index_eei_effect"

Byl by někdo schopen na toto napsat nějaký nahrazovací regulární výraz?