Hi, here is a piece of pseudo-code (taken from Ruby) that illustrates the problem I'd like to solve in Python:
str = 'abc' if str =~ /(b)/ # Check if str matches a pattern str = $` + $1 # Perform some action elsif str =~ /(a)/ # Check another pattern str = $1 + $' # Perform some other action elsif str =~ /(c)/ str = $1 end The task is to check a string against a number of different patterns (containing groupings). For each pattern, different actions need to be taken. In Python, a single match of this kind can be done as follows: str = 'abc' match = re.search( '(b)' , str ) if match: str = str[0:m.start()] + m.group(1) # I'm not sure if this way of accessing 'pre-match' # is optimal, but let's ignore it now The problem is that you you can't extend this example to multiple matches with 'elif' because the match must be performed separately from the conditional. This obviously won't work in Python: if match=re.search( pattern1 , str ): ... elif match=re.search( pattern2 , str ): ... So the only way seems to be: match = re.search( pattern1 , str ): if match: .... else: match = re.search( pattern2 , str ): if match: .... else: match = re.search( pattern3 , str ): if match: .... and we end up having a very nasty, multiply-nested code. Is there an alternative to it? Am I missing something? Python doesn't have special variables $1, $2 (right?) so you must assign the result of a match to a variable, to be able to access the groups. I'd appreciate any hints. Tomasz -- http://mail.python.org/mailman/listinfo/python-list