regex gsub

Discussion in 'Ruby' started by Lorenzo Brito Morales, Feb 26, 2011.

  1. i have already working these phone.gsub(regex, "<
    #{regex.match(phone)} >" ) but i think is another way to do it not?
    like phone.gsub(regex,"< \1 >")
    but the last instrucction does not bring the regex.match

    what i want to do , is suppose you have the string "i love my dad "
    the regex find dad then substitute dad <dad> , i have already solved
    but i want
    to know if the a fancy way to do the gsub like gsub(regex,"< \1 >")
    instead of phone.gsub(regex, "< #{regex.match(phone)} >" )
     
    Lorenzo Brito Morales, Feb 26, 2011
    #1
    1. Advertising

  2. [Note: parts of this message were removed to make it a legal post.]

    Try

    "i love my dad".gsub(/dad/) { |match| "<#{match}>" }

    or,

    "i love my dad".gsub(/dad/) { "<#{$&}>" }

    --
    Cheers,
    Junegunn Choi.
     
    Junegunn Choi, Feb 26, 2011
    #2
    1. Advertising

  3. On Sat, Feb 26, 2011 at 5:33 PM, Lorenzo Brito Morales
    <> wrote:
    > =A0i have already working these phone.gsub(regex, "<
    > #{regex.match(phone)} >" ) but i think is another way to do it not?
    > like phone.gsub(regex,"< \1 >")
    > but the last instrucction does not bring the regex.match
    >
    > what i want to do , is suppose you have the string "i love my dad "
    > the regex find dad then substitute dad <dad> , i have already solved
    > but i want
    > to know if the a fancy way to do the gsub like gsub(regex,"< \1 >")
    > instead of phone.gsub(regex, "< #{regex.match(phone)} >" )
    >
    >


    str =3D "i love my dad"
    str2 =3D "I went to Baghdad"

    p str.gsub(/(dad)/,'<\1>') #> "i love my <dad>"

    p str2.gsub(/(dad)/,'<\1>') #> "I went to Bagh<dad>"


    Do you also want that second match?





    Harry
     
    Harry Kakueki, Feb 26, 2011
    #3
  4. Lorenzo Brito Morales wrote in post #984075:
    > i have already working these phone.gsub(regex, "<
    > #{regex.match(phone)} >" ) but i think is another way to do it not?
    > like phone.gsub(regex,"< \1 >")
    > but the last instrucction does not bring the regex.match


    It's to do with how double-quoted strings interpret backslashes.

    irb(main):001:0> "< \1 >"
    => "< \001 >"
    irb(main):002:0> '< \1 >'
    => "< \\1 >"
    irb(main):003:0> "< \\1 >"
    => "< \\1 >"
    irb(main):004:0> "< \\1 >".size
    => 6
    irb(main):005:0> puts "< \\1 >"
    < \1 >
    => nil

    Note that "< \\1 >" contains a *single* backslash - a backslash escaped
    with a backslash :)

    But you'd probably be better using the block form of gsub anyway:

    phone.gsub(regex) { "< #{$&} >" }

    --
    Posted via http://www.ruby-forum.com/.
     
    Brian Candler, Feb 27, 2011
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Dan Fitzpatrick

    Regex back reference in gsub

    Dan Fitzpatrick, Jul 13, 2005, in forum: Ruby
    Replies:
    4
    Views:
    396
    David A. Black
    Jul 13, 2005
  2. aurelianito

    gsub and gsub! are inconsistent

    aurelianito, Nov 8, 2005, in forum: Ruby
    Replies:
    9
    Views:
    183
    Robert Klemme
    Nov 9, 2005
  3. Wes Gamble
    Replies:
    3
    Views:
    186
    Wes Gamble
    Aug 12, 2006
  4. Shea Martin
    Replies:
    1
    Views:
    189
    Rodrigo Bermejo
    Jan 15, 2007
  5. Gilbert Rebhan

    regex problem with gsub

    Gilbert Rebhan, Sep 22, 2007, in forum: Ruby
    Replies:
    3
    Views:
    140
    Jovino
    Sep 22, 2007
Loading...

Share This Page