Substituting with a find counter . .


#1

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}”


#2

2006/5/23, Peter B. removed_email_address@domain.invalid:

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


#3

Peter B. 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 W.