Hi,
I have a simple project that I thought I'd have a crack at in Ruby. I
want to retrieve a list of names from a web page but the Ruby interpreter is
giving me allot of trouble in parsing the pattern for the regular
expression. The pattern I wanted to use was the following :
pattern =
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</a></span>/
understandably the forward slash in the closing span tag causes Ruby to
think this is the end of the pattern. Hence my question is how the heck do I
escape this?
Thanks
Paul
B.T.W I realise that following works just as well...
pattern =
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</
Paul Wistrand wrote:
Hi,
I have a simple project that I thought I'd have a crack at in Ruby. I
want to retrieve a list of names from a web page but the Ruby interpreter is
giving me allot of trouble in parsing the pattern for the regular
expression. The pattern I wanted to use was the following :
pattern =
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</a></span>/
understandably the forward slash in the closing span tag causes Ruby to
think this is the end of the pattern. Hence my question is how the heck do I
escape this?
Thanks
Paul
B.T.W I realise that following works just as well...
pattern =
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</
Just add a \ slash before all characters you want to escape, in this case the forward slashes.
example:
rgx = /<\/span>/
HTH,
Zach
An alternative is to use %r{} syntax.
%r{(now|I)can (use)+ as many /* as I? want}
Of course the downside being is now you have to escape { }. But your
pattern doesn't seem to contain any of those anyway.
···
On Fri, 18 Feb 2005 10:06:04 +0900, Zach Dennis <zdennis@mktec.com> wrote:
Paul Wistrand wrote:
> Hi,
> I have a simple project that I thought I'd have a crack at in Ruby. I
> want to retrieve a list of names from a web page but the Ruby interpreter is
> giving me allot of trouble in parsing the pattern for the regular
> expression. The pattern I wanted to use was the following :
>
> pattern =
> /<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
> ([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</a></span>/
>
> understandably the forward slash in the closing span tag causes Ruby to
> think this is the end of the pattern. Hence my question is how the heck do I
> escape this?
>
> Thanks
> Paul
>
> B.T.W I realise that following works just as well...
> pattern =
> /<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
> ([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</
Just add a \ slash before all characters you want to escape, in this
case the forward slashes.
example:
rgx = /<\/span>/
HTH,
Zach
LOL. As soon as I saw your post I thought to myself "but I tried that". Then
it dawned on me that in my tied state I had escaped the forward slash in the
closing </span> tag but not the </a>! Thanks.
"Zach Dennis" <zdennis@mktec.com> wrote in message
news:42153F6D.6030006@mktec.com...
Paul Wistrand wrote:
> Hi,
> I have a simple project that I thought I'd have a crack at in Ruby.
I
> want to retrieve a list of names from a web page but the Ruby
interpreter is
> giving me allot of trouble in parsing the pattern for the regular
> expression. The pattern I wanted to use was the following :
>
> pattern =
>
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
> ([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</a></span>/
>
> understandably the forward slash in the closing span tag causes Ruby to
> think this is the end of the pattern. Hence my question is how the heck
do I
> escape this?
>
> Thanks
> Paul
>
> B.T.W I realise that following works just as well...
> pattern =
>
/<span\sclass\s=\s"rankingName"><a\shref="w3xp-player-profile.aspx\?Gateway=
···
> ([^&]*)&PlayerName=([^"]*)">((\n|.)*?)</
Just add a \ slash before all characters you want to escape, in this
case the forward slashes.
example:
rgx = /<\/span>/
HTH,
Zach
%r can take a pretty much arbitrary delimiter (I forget what isn't
allowed). e.g. %r|hello| %r<world> %r=this= etc. The first character
after the r acts as the opening delimiter, if it's one of a pair the
other one acts as the closing, otherwise the opening character closes it
too.
martin
···
Logan Capaldo <logancapaldo@gmail.com> wrote:
An alternative is to use %r{} syntax.
%r{(now|I)can (use)+ as many /* as I? want}
Of course the downside being is now you have to escape { }. But your
pattern doesn't seem to contain any of those anyway.
Logan Capaldo wrote:
An alternative is to use %r{} syntax.
%r{(now|I)can (use)+ as many /* as I? want}
Of course the downside being is now you have to escape { }. But your
pattern doesn't seem to contain any of those anyway.
It's not a problem as long as they are balanced:
irb(main):004:0> %r{foo{0,1}}
=> /foo{0,1}/
So %r with one of the paired delimiters is usually a pretty good choice if you want to avoid escaping. Especially since you have to escape (, ), { and } in Regexps anyway if they don't appear in one of the meta constructs in which case they would be balanced anyway.