Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > accessing all matches using regex

Reply
Thread Tools

accessing all matches using regex

 
 
Spike Grobstein
Guest
Posts: n/a
 
      08-06-2007
Hey all

so, I primarily use PERL for creating shell scripts but I'm trying to
learn ruby since it feels like it could do more of what I want with
cleaner code. I especially like the way it has regex built right in.

I'm running into an issue though, because in perl, I can do this:

while (/href=\"([^\"]+)\"/) {
## do stuff...
}

I use this simple regex because it's based around what I use this style
for the most.

I can't figure out how to that in ruby. how can I iterate over all
matches in a string? I could split the lines, but sometimes there may be
two or more matches on a single line.

is there a nice, clean, ruby way to do this?

Thanks!
--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Jim Marshall
Guest
Posts: n/a
 
      08-06-2007
On 8/5/07, Spike Grobstein <(E-Mail Removed)> wrote:
> while (/href=\"([^\"]+)\"/) {
> ## do stuff...
> }
> ...
> I can't figure out how to that in ruby. how can I iterate over all
> matches in a string? I could split the lines, but sometimes there may be
> two or more matches on a single line.
>
> is there a nice, clean, ruby way to do this?
>


Have a look at String#scan ("ri String#scan" might do it, depending
upon your installation).
For example,
>some_string_with_html.scan(/href=\"([^\"]+)\"/) do |match|
> do_stuff_with match
>end


 
Reply With Quote
 
 
 
 
Gordon Thiesfeld
Guest
Posts: n/a
 
      08-06-2007
> is there a nice, clean, ruby way to do this?

Have a look at String#scan

 
Reply With Quote
 
Spike Grobstein
Guest
Posts: n/a
 
      08-06-2007
david karapetyan wrote:
> look up gsub! for the String class. you can write
>
> some_string.gsub(/href=\"([^\"]+)\"/) do |match|
> ## do stuff with match
> end
>
> i'm pretty sure the above code will work for what you are trying to do.


you know, I thought about String#scan, but for some reason didn't think
it was what I was looking for, but it works sorta nicely. it doesn't
behave exactly how I'd want... but the String#gsub method looks more
like what I'm looking for; this way, I can loop and access my various
$1, $2, etc matches and not have to work with an array that I have to
loop over in a weird way (since I don't use some of matches).

I'll have to play with this a little more.

thanks!
--
Posted via http://www.ruby-forum.com/.

 
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
Finding all regex matches by index? Roy Smith Python 1 05-30-2012 01:49 AM
iterating over sub-matches using std::tr1::regex? DomoChan@gmail.com C++ 3 08-13-2008 10:14 PM
How make regex that means "contains regex#1 but NOT regex#2" ?? seberino@spawar.navy.mil Python 3 07-01-2008 03:06 PM
using regex to select line matches nadabadan Perl Misc 2 06-15-2007 09:45 PM
Extracting matches from Regex.Split Stephan Bour ASP .Net 3 10-30-2003 04:59 PM



Advertisments