Forums » Ruby » Substituting with a find counter . . .

Substituting with a find counter . . .
Posted by Peter Bailey (peterbailey)
on 23.05.2006 16:01
In this gsub block, I'd like to save the searched parenthetical data, 
indicated by (.*) in line 2. The script works, but, instead of getting 
the parenthetical data, I'm getting "$1." Very literal, but, not what I 
want. What am I doing wrong?

Thanks.
Peter


1 counter = 0
2  contents.gsub!(/^%%Page:(.*)[0-9]{1,5}$/)  do |match|
3  counter += 1
4  "%%Page: $1 #{counter}"
Re: Substituting with a find counter . . .
Posted by Robert Klemme (Guest)
on 23.05.2006 16:16
2006/5/23, Peter Bailey <pbailey@bna.com>:
> In this gsub block, I'd like to save the searched parenthetical data,
> indicated by (.*) in line 2. The script works, but, instead of getting
> the parenthetical data, I'm getting "$1." Very literal, but, not what I
> want. What am I doing wrong?

You're missing a hash which leads to your $1 being used literally:

> 1 counter = 0
> 2  contents.gsub!(/^%%Page:(.*)[0-9]{1,5}$/)  do |match|
> 3  counter += 1
> 4  "%%Page: $1 #{counter}"

make that last line

"%%Page: #$1 #{counter}"

Kind regards

robert
Re: Substituting with a find counter . . .
Posted by Jim Weirich (weirich)
on 23.05.2006 16:23
Peter Bailey wrote:
> In this gsub block, I'd like to save the searched parenthetical data, 
> indicated by (.*) in line 2. The script works, but, instead of getting 
> the parenthetical data, I'm getting "$1." Very literal, but, not what I 
> want. What am I doing wrong?
> 
> Thanks.
> Peter
> 
> 
> 1 counter = 0
> 2  contents.gsub!(/^%%Page:(.*)[0-9]{1,5}$/)  do |match|
> 3  counter += 1
> 4  "%%Page: $1 #{counter}"

"%%Page: #{$1} #{counter}"

should help.

Also, the .* is gobbling up any digits except the last.  You probably 
want a space between .* and [0-9], or make the . match non-greedy with 
.*?.  Since your replacement string has a space, I'm guessing that's 
what you want.

-- Jim Weirich