On 2013-01-02 15:34, Hamann, T.D. wrote:

[...] given a string:

i99o

where I want to replace the 'i' by a '1' and the 'o' by a '0' (zero), the 
following regex fails:

s/(i)(\d\d)(o)/1$20/;

Since you are capturing 3 groups:

  s/(i)([0-9]{2})(o)/$1$2$3/;



for the obvious reason that perl looks for a pattern match at bracket set #20, 
which doesn't exist.

I can fix this by inserting a space in front of the zero, like this:

s/(i)(\d\d)(o)/1$2 0/;

and then using a second regular expression to remove the space, but that 
somehow seems silly. Surely there is a quicker way to do this?

Regards,
Thomas Hamann



--
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to