When code starts growing, it can be a good idea to split things up into modules. Give your variables sensible names. Same goes for subroutines.
More importantly: document what you do. If you write code of which you even think it has the slightest chance that someone else will not immediately understand what happens, write a commentline in which you describe what it does. That does not only go for complicated regexes, but also for calculations and stuff like that.