Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Ruby regexp Match

Reply
Thread Tools

Ruby regexp Match

 
 
John Sheahan
Guest
Posts: n/a
 
      12-04-2007
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/.

 
Reply With Quote
 
 
 
 
botp
Guest
Posts: n/a
 
      12-04-2007
On 12/4/07, John Sheahan <(E-Mail Removed)> 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

 
Reply With Quote
 
 
 
 
Justin Collins
Guest
Posts: n/a
 
      12-04-2007
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


 
Reply With Quote
 
John Sheahan
Guest
Posts: n/a
 
      12-04-2007
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/.

 
Reply With Quote
 
MonkeeSage
Guest
Posts: n/a
 
      12-04-2007
On Dec 3, 8:54 pm, John Sheahan <(E-Mail Removed)> 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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Python -Vs- Ruby: A regexp match to the death! rantingrick Python 13 08-16-2010 10:58 PM
[regexp] How to convert string "/regexp/i" to /regexp/i - ? Joao Silva Ruby 16 08-21-2009 05:52 PM
String#match vs. Regexp#match - confused Old Echo Ruby 1 09-04-2008 06:11 PM
Ruby 1.9 - ArgumentError: incompatible encoding regexp match(US-ASCII regexp with ISO-2022-JP string) Mikel Lindsaar Ruby 0 03-31-2008 10:27 AM
RegExp.exec() returns null when there is a match - a JavaScript RegExp bug? Uldis Bojars Javascript 2 12-17-2006 09:59 PM



Advertisments