if i indeed want to start using MatchData instead of the "warts" such
as $-variables in regular expressions, how do i go about writing code
blocks for String#sub et al if i want to get a match for a particular
group?
i think this is incorrect. id appends an underscore. i need to replace
it.
Ah, sorry, mis-read what yours did.
It appears that gsub has been written to depend on the magic variables,
because it gives you no other means of accessing the MatchData.
So, to use gsub like this and get the MatchData, your guess is as good
as mine as to how to get to it. Just hold down shift and pound on the
keyboard until you guess the right bit of magic punctuation.
Sorry I couldn't help more,
···
--
Neil Stevens - neil@hakubi.us
'A republic, if you can keep it.' -- Benjamin Franklin
if i indeed want to start using MatchData instead of the "warts" such
as $-variables in regular expressions, how do i go about writing code
blocks for String#sub et al if i want to get a match for a particular
group?
example:
puts 'a-b-c-'.gsub(/(.)-/) { $1 + '_' }
puts 'a-b-c-'.gsub(/(.)-/) { |str| str + '_' }
Though gsub never does give you access to MatchData. MatchData is used
when you do something like this:
The MatchData object is also placed in a global variable, but I won't show it here since it is a punctuation variable and you requested something different.
Not a direct answer, but you can just use a replacement string in this case:
'a-b-c-'.gsub(/(.)-/, '\1_')
Or even no regular expression at all:
'a-b-c-'.tr('-', '_')
Hope that helps.
James Edward Gray II
···
On Dec 15, 2005, at 7:46 PM, ako... wrote:
hello,
if i indeed want to start using MatchData instead of the "warts" such
as $-variables in regular expressions, how do i go about writing code
blocks for String#sub et al if i want to get a match for a particular
group?
if i indeed want to start using MatchData instead of the "warts" such
as $-variables in regular expressions, how do i go about writing code
blocks for String#sub et al if i want to get a match for a particular
group?