"I used Regex at first to do the job but it turned into an unholy mess (not that it couldn't parse what I needed) and PetitParser was there."
it really depends how you approach this. For example in my case I quickly found out that would be insane to put everything in a single string, so I broke the single string to smaller ones and resynthesised it. Each string had a very simple regex quite easy to read if one is familiar syntax. And as Damien said you could extend String to a more flexible object, but then you get in the realm of SmaCC/ PettitParser. I chose SmaCC because it already offered solution to my problem. But for the title of this thread "simple parsing" I think regex is a very good choice depending on your demands.