En Wed, 14 Feb 2007 01:07:33 -0300, John Nagle <[EMAIL PROTECTED]>  
escribió:

> Here's a large Perl regular expression, from a Perl address parser in  
> CPAN:
>
>     use re 'eval';
>      $Addr_Match{street} = qr/
>          (?:
>            # special case for addresses like 100 South Street
>            (?:($Addr_Match{direct})\W+           (?{ $_{street} = $^N })
>               ($Addr_Match{type})\b              (?{ $_{type}   = $^N }))
>            |
>            (?:($Addr_Match{direct})\W+                (?{ $_{prefix} = $^N 
> }))?
>            (?:
>              ([^,]+)                          (?{ $_{street} = $^N })
>              (?:[^\w,]+($Addr_Match{type})\b  (?{ $_{type}   = $^N }))
>              (?:[^\w,]+($Addr_Match{direct})\b        (?{ $_{suffix} = $^N 
> }))?
>             |
>              ([^,]*\d)                                (?{ $_{street} = $^N })
>              ($Addr_Match{direct})\b          (?{ $_{suffix} = $^N })
>             |
>              ([^,]+?)                         (?{ $_{street} = $^N })
>              (?:[^\w,]+($Addr_Match{type})\b  (?{ $_{type}   = $^N }))?
>              (?:[^\w,]+($Addr_Match{direct})\b        (?{ $_{suffix} = $^N 
> }))?
>            )
>          )
>       /ix;
>
> I'm trying to convert this to Python.
>
> Those entries like "$(Addr_Match{direct}) are other regular expressions,
> being used here as subexpressions.  Those have already been converted
> to forms like "Addr_Match.direct" in Python.  But how to call them?
> Is that possible in Python, and if so, where is it documented?

That would be string interpolation, like this:

Addr_Match = {"direct": "some_re_string",
               "type": "other_re"
              }

regexp = "%(direct)s %(type)s" % Addr_Match

-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to