$` should contain whatever precedes your match
On 27 July, 15:06, Nik <[email protected]> wrote: > Oh yes, sorry about forgetting that. > > original string is > str = "xxxy" > > wanted string is > str = "<xxx>y" > > but the x's are not constant, the y is constant. > > so another sample string can look like > str2 = "abcy" > and the wanted string from it is > str2 = "<abc>y" > > So in a more human term, it is, find where y is, and then pointy > bracket whatever precedes y. > > And since whatever precedes y always differs from string to string. I > would very much like to match y first, and then say " bracket all that > precedes it" > > And one more thing, I read about something called the Lookahead. with > the (?=). And I could have done something like: > str = "xxxy" > re=/(.+)(?=y)/ > str.gsub!(re){|s| s = "<" + s + ">"} > #=>"<xxx>y" > > While it worked, but in my actual string, I don't know how I can bring > this up clearly -- the string comes from the output of antiword.exe (a > program that extracts text from a word document). And in it, there > contains something like \267 or \306 which the (.+) cannot match even > if I used the u switch for UTF-8. And so I thought, maybe I should > just match y, and then manipulate whatever precedes as I originally > wanted instead of trying to match what precedes y directly. > > of course if you know how to match \267, I'd be so glad to learn it, > too! And the thing is, I don't even know what to call a "\267". the > closest to finding a name for it, I found maybe its cousin under > Backlashes in the ruby book. But as to how to match them and what if > there's something else in the future that pops up in the document > that's not of this form, how will I deal with that? It's all very > frustrating. > > Thank You! > > On Jul 27, 1:50 am, Robby Russell <[email protected]> wrote: > > > Can you elaborate on your goal? Taking "xxxy"... what do you want the > > string to look like? > > > Robby > > > On Mon, Jul 27, 2009 at 6:42 AM, Nik<[email protected]> wrote: > > > > Hello All! > > > > I have a string: > > > str = "xxxy" > > > > and a regular expression: > > > re=/y/ > > > > I know that if I do a gsub!, the variable that gets passed into the > > > block acts as the matched string in str; and I can do something to > > > this matched string; so: > > > str.gsub!(re){|s| > > > s.upcase > > > } > > > #=> "xxxY" > > > > But what can I do to be able to manipulate the pre-match? is it the > > > $`? I tried > > > str.gsub!(re){|s| > > > $`.upcase > > > } > > > It wouldn't work. > > > > Thank you for your help! > > > -- > > Robby Russell > > Chief Evangelist, Partner > > > PLANET ARGON, LLC > > design // development // hosting w/Ruby on Rails > > >http://planetargon.com/http://robbyonrails.com/http://twitter.com/pla... > > aim: planetargon > > > +1 503 445 2457 > > +1 877 55 ARGON [toll free] > > +1 815 642 4068 [fax] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

