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?
John Nagle 3 1526
En Wed, 14 Feb 2007 01:07:33 -0300, John Nagle <na***@animats.com>
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
Gabriel Genellina wrote:
En Wed, 14 Feb 2007 01:07:33 -0300, John Nagle <na***@animats.com>
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
You're right. I looked at the Perl code, and the strings are just being
inserted, not precompiled as regular expressions and called.
Incidentally, does anybody know what "$^N" means in Perl? That
abbreviation isn't in the list of special variables.
John Nagle
En Wed, 14 Feb 2007 04:11:37 -0300, John Nagle <na***@animats.com>
escribió:
Gabriel Genellina wrote:
>En Wed, 14 Feb 2007 01:07:33 -0300, John Nagle <na***@animats.com> 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 }))
Incidentally, does anybody know what "$^N" means in Perl? That
abbreviation isn't in the list of special variables.
From the context it appears to be the "last matched group", or something
like that... but best look for some authoritative answer.
--
Gabriel Genellina This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Hunn E. Balsiche |
last post by:
in term of its OO features, syntax consistencies, ease of use, and their
development progress. I have not use python but heard about it quite often;
and ruby, is it mature enough to be use for...
|
by: Michael McGarry |
last post by:
Hi,
I am just starting to use Python. Does Python have all the regular
expression features of Perl?
Is Python missing any features available in Perl?
Thanks,
Michael
|
by: Bill Chiu |
last post by:
Hi:
I'm used to perl's regular expression string matching, e.g.
if ($line =~ /^(.*)+(.*)$/) {
$name = $1;
$age = $2;
....
I want to do this in C++ using gcc under linux and cygwin - what...
|
by: Dieter Vanderelst |
last post by:
Dear all,
I'm currently comparing Python versus Perl to use in a project that
involved a lot of text processing. I'm trying to determine what the most
efficient language would be for our...
|
by: MJ |
last post by:
HI
I want to know what is mean by regular expression in C
Mayur
|
by: scottyman |
last post by:
I can't make this script work properly. I've gone as far as I can with
it and the rest is out of my ability. I can do some html editing but
I'm lost in the Java world. The script at the bottom of...
|
by: John Pye |
last post by:
Hi all
I have a file with a bunch of perl regular expressions like so:
/(^|)\*(.*?)\*(|$)/$1'''$2'''$3/ #
bold
/(^|)\_\_(.*?)\_\_(|$)/$1''<b>$2<\/
b>''$3/ # italic bold...
|
by: seberino |
last post by:
How similar is Python's re module (regular expressions) compared
to Perl's and grep's regular expression syntaxes?
I really hope regular expression syntax is sufficiently standardized
that
we...
|
by: prekida |
last post by:
I have'nt used perl-style regular expression much.
i have a need to search for a string called ORA-04031 error from a log file
I use the following regular expression
ORA-0*(4031)
and the...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: marktang |
last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
| |