Stefano Crocco
12/30/2007 12:59:00 PM
Alle domenica 30 dicembre 2007, John Griffiths ha scritto:
> Hi, ok I'm none to good at regular expressions but i've got to do
> something and need a little help.
>
> Basically i'm trying to hunt down a particular word within a url string,
>
> so to test, i define a local variable, var_string,
>
> var_string="user=22&val=999"
>
> then run a regular expression match on the variable,
>
> user = var_string.match(/=(\w+)&/)
>
> which returns => '22' as it's looking for the first word occurence which
> has = and a & at the start & finish.
>
> so the question is how could i return the second occurence (999) ?
In ruby 1.8, String#match always returns the first match. If you need to find
other matches, you can look at StringScanner or String#scan (of course,
you'll need to remove the & from the regexp, or make it optional, if you want
to match the string '999'. To make the '&' optional, put a ? after
it: /=(\w+)&?).
In ruby 1.9, instead String#match should accept an offset (as far as I know,
the documentation doesn't mention this, but it seems to work). You should
still modify the regexp to make it work.
I hope this helps
Stefano