regexp in Python (from Perl)

Bruno Desthuilliers bdesth.quelquechose at free.quelquepart.fr
Sun Oct 19 18:47:31 CEST 2008


Pat a écrit :
> I have a regexp in Perl that converts the last digit of an ip address to 
>  '9'.  This is a very particular case so I don't want to go off on a 
> tangent of IP octets.
> 
>  ( my $s = $str ) =~ s/((\d+\.){3})\d+/${1}9/ ;
> 
> While I can do this in Python which accomplishes the same thing:
> 
> ip = ip[ :-1 ]
> ip =+ '9'

or:

ip = ip[:-1]+"9"


> I'm more interested, for my own edification in non-trivial cases, in how 
> one would convert the Perl RE to a Python RE that use groups.  I am 
> somewhat familiar using the group method from the re package but I 
> wanted to know if there was a one-line solution.

Is that what you want ?

 >>> re.sub(r'^(((\d+)\.){3})\d+$', "\g<1>9", "192.168.1.1")
'192.168.1.9'

>>> re.sub(r'^(((\d+)\.){3})\d+$', "\g<1>9", "192.168.1.100")
'192.168.1.9'





More information about the Python-list mailing list