P is for Practical  
PerlMonks 
Help with regex  find captured pattern twiceby pachydermic (Beadle) 
on Apr 09, 2013 at 21:24 UTC ( #1027848=perlquestion: print w/ replies, xml )  Need Help?? 
pachydermic has asked for the
wisdom of the Perl Monks concerning the following question:
Hey guys, my problem involves rewriting equations with regular expressions. I have a list of special "endogenous" variables which need to be changed from "x" to "xSS*exp(x)" everywhere they occur in an equation. I'm working with time series, so "x(1)" or "x(+1)" needs to be changed to "xSS*exp(x(1))" or "xSS*exp(x(+1))", as well.
For example, let's suppose that my endogenous variables are: y, c, k, a, and h.I need to take this: y = a*(k(1)ˆalpha)*(hˆ(1alpha));and turn it into this: (ySS*exp(y)) = (aSS*exp(a))*((kSS*exp(k(1)))ˆalpha)*((hSS*exp(h))ˆ(1alpha));Now I've already gotten started on this. Assume I already have a list of variables and equations to work with (contained in a single string which also has new lines). My code is:
And that's mostly okay except for the equation where you find "c/c(+1)" because the "/" character is already captured when the code finds "c/"  therefore "/c(+1)" isn't replaced. You can't just ignore the first (\W) because then parameters like "theta" would be problematic. I know my regexs aren't very good anyways, so I'd like some advice about how to handle this problem. Thank you very much for your time  hopefully I've explained everything clearly.
Back to
Seekers of Perl Wisdom

