go ahead... be a heretic | |
PerlMonks |
Re: Regexps for Parsing Brackets in Chemical Formulaeby Masem (Monsignor) |
on Nov 03, 2001 at 20:34 UTC ( [id://123046]=note: print w/replies, xml ) | Need Help?? |
A partial suggestion:
Do a while loop on $formula =~ s/\(([A-Za-z0-9]*)\)/Q$i/. This will only get any inner compositions (no addition parens). You'll replace these with Q1, Q2, etc. (or if you're worried about more, you can use Qa, Qb, or QA, QB, etc. since I suspect you're considering chemical symbols with no more than 2 letters). $1 will capture the inner composition, which you should work out and associate in a hash with the Q variable. Note that you remove those inner parans when you do this. The next time around, if there are still more parans, you'll capture those; Now you can consider the Q series and do any necessarily multiplication from those as well. Once you exit this while loop, you'll have no more parans, so you can calculate the final composition with no problems.
-----------------------------------------------------
In Section
Seekers of Perl Wisdom
|
|