Ruby regexp Match

Discussion in 'Ruby' started by John Sheahan, Dec 4, 2007.

  1. John Sheahan

    John Sheahan Guest

    I am trying to convert some old Perl scripts to Ruby and am stuck at a
    spot where my Perl script is doing a regular expression match on some
    text pulled from a webpage.

    In Perl, I was able to grab the text I wanted by putting () around the
    regular expression which represented the data I wanted, then access it
    with the x[0] method.

    Is there something like this in Ruby? I was looking through the String
    class and don't really see a method listed to do this.

    I want to be able to do a kind of match like:

    m/^Title([a-zA-Z0-9])//g

    and access what's inside the () with x[0].

    Thanks

    jackster
    --
    Posted via http://www.ruby-forum.com/.
    John Sheahan, Dec 4, 2007
    #1
    1. Advertising

  2. John Sheahan

    botp Guest

    On 12/4/07, John Sheahan <> wrote:
    > I want to be able to do a kind of match like:
    > m/^Title([a-zA-Z0-9])//g
    > and access what's inside the () with x[0].


    ruby gives more (objects), see http://ruby-doc.org/core/classes/MatchData.html

    some simple examples

    t="Title123asdf"
    #=> "Title123asdf"
    /^Title([a-zA-Z0-9])/.match(t)
    #=> #<MatchData:0x28b7b60>
    /^Title([a-zA-Z0-9])/.match(t)[0]
    #=> "Title1"
    /^Title([a-zA-Z0-9])/.match(t)[1]
    #=> "1"
    $~
    #=> #<MatchData:0x28afc94>
    $~[0]
    #=> "Title1"
    $~[1]
    #=> "1"
    x=/^Title([a-zA-Z0-9])/.match(t)
    #=> #<MatchData:0x28a8598>
    x[0]
    #=> "Title1"
    x[1]

    kind regards -botp
    botp, Dec 4, 2007
    #2
    1. Advertising

  3. John Sheahan wrote:
    > I am trying to convert some old Perl scripts to Ruby and am stuck at a
    > spot where my Perl script is doing a regular expression match on some
    > text pulled from a webpage.
    >
    > In Perl, I was able to grab the text I wanted by putting () around the
    > regular expression which represented the data I wanted, then access it
    > with the x[0] method.
    >
    > Is there something like this in Ruby? I was looking through the String
    > class and don't really see a method listed to do this.
    >
    > I want to be able to do a kind of match like:
    >
    > m/^Title([a-zA-Z0-9])//g
    >
    > and access what's inside the () with x[0].
    >
    > Thanks
    >
    > jackster
    >


    Yes.

    irb(main):001:0> result = "Title1".match(/^Title([a-zA-Z0-9])/)
    => #<MatchData:0xb7d90654>
    irb(main):002:0> result[1]
    => "1"
    irb(main):003:0> $1
    => "1"
    irb(main):004:0> Regexp.last_match[1]
    => "1"
    irb(main):005:0> $~[1]
    => "1"


    http://ruby-doc.org/core/classes/MatchData.html

    -Justin
    Justin Collins, Dec 4, 2007
    #3
  4. John Sheahan

    John Sheahan Guest

    I got it!

    thanks to everyone that posted a reply....you all were very helpful!
    jackster

    Collins wrote:
    > John Sheahan wrote:
    >>
    >> I want to be able to do a kind of match like:
    >>
    >> m/^Title([a-zA-Z0-9])//g
    >>
    >> and access what's inside the () with x[0].
    >>
    >> Thanks
    >>
    >> jackster
    >>

    >
    > Yes.
    >
    > irb(main):001:0> result = "Title1".match(/^Title([a-zA-Z0-9])/)
    > => #<MatchData:0xb7d90654>
    > irb(main):002:0> result[1]
    > => "1"
    > irb(main):003:0> $1
    > => "1"
    > irb(main):004:0> Regexp.last_match[1]
    > => "1"
    > irb(main):005:0> $~[1]
    > => "1"
    >
    >
    > http://ruby-doc.org/core/classes/MatchData.html
    >
    > -Justin


    --
    Posted via http://www.ruby-forum.com/.
    John Sheahan, Dec 4, 2007
    #4
  5. John Sheahan

    MonkeeSage Guest

    On Dec 3, 8:54 pm, John Sheahan <> wrote:
    > I got it!
    >
    > thanks to everyone that posted a reply....you all were very helpful!
    > jackster
    >
    >
    >
    > Collins wrote:
    > > John Sheahan wrote:

    >
    > >> I want to be able to do a kind of match like:

    >
    > >> m/^Title([a-zA-Z0-9])//g

    >
    > >> and access what's inside the () with x[0].

    >
    > >> Thanks

    >
    > >> jackster

    >
    > > Yes.

    >
    > > irb(main):001:0> result = "Title1".match(/^Title([a-zA-Z0-9])/)
    > > => #<MatchData:0xb7d90654>
    > > irb(main):002:0> result[1]
    > > => "1"
    > > irb(main):003:0> $1
    > > => "1"
    > > irb(main):004:0> Regexp.last_match[1]
    > > => "1"
    > > irb(main):005:0> $~[1]
    > > => "1"

    >
    > >http://ruby-doc.org/core/classes/MatchData.html

    >
    > > -Justin

    >
    > --
    > Posted viahttp://www.ruby-forum.com/.


    You can also do like you would in perl...

    "TitleA" =~ /^Title([a-zA-Z0-9])/
    puts $1
    # => A

    Regards,
    Jordan
    MonkeeSage, Dec 4, 2007
    #5
    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. rantingrick
    Replies:
    13
    Views:
    854
    rantingrick
    Aug 16, 2010
  2. Mikel Lindsaar
    Replies:
    0
    Views:
    480
    Mikel Lindsaar
    Mar 31, 2008
  3. Old Echo
    Replies:
    1
    Views:
    180
    Adam Shelly
    Sep 4, 2008
  4. Joao Silva
    Replies:
    16
    Views:
    355
    7stud --
    Aug 21, 2009
  5. Uldis  Bojars
    Replies:
    2
    Views:
    190
    Janwillem Borleffs
    Dec 17, 2006
Loading...

Share This Page