$` 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to