Re: Vexing regex question--storing multiple hits for later use

2002-03-06 Thread Jenda Krynicky

From: "Daniel J. Tomso" <[EMAIL PROTECTED]>
> I'm matching a pattern against a long string, and I want to examine
> each occurrence of the match.  I know that $& stores the match, but is
> there a way to store EVERY match in the string, and then look at them?

Dont use $&, it'll slow down ALL regexps even if you use it once!

> Example:
> 
> $str = "This is a very long string, isn't it?"
> 
> If I want to match against something like /i[st]/ to pick up all the
> 'is' and 'it' strings, then see what I've got (i.e. each instance),
> can I do it?

Either

@matches = ($str =~ /(i[st])/g);

or

while ($str =~ /(i[st])/g) {
my $match = $1;
...
}

Jenda

=== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==
There is a reason for living. There must be. I've seen it somewhere.
It's just that in the mess on my table ... and in my brain.
I can't find it.
--- me

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




Re: Vexing regex question--storing multiple hits for later use

2002-03-06 Thread Jon Molin

"Daniel J. Tomso" wrote:
> 
> Greetings.
> 
> I'm matching a pattern against a long string, and I want to examine each
> occurrence of the match.  I know that $& stores the match, but is there
> a way to store EVERY match in the string, and then look at them?
> 
> Example:
> 
> $str = "This is a very long string, isn't it?"
> 
> If I want to match against something like /i[st]/ to pick up all the
> 'is' and 'it' strings, then see what I've got (i.e. each instance), can
> I do it?
> 

is this what you're after:

$str = "This is a very long string, isn't it?"
foreach ($str =~ /(i[is])/g)
{
  do stuff
}

or collect them all:

$str = "This is a very long string, isn't it?"
my @store = ($str =~ /(i[is])/g);

I'm not sure this is what you wanted...
/Jon

> I've tried to wade through the whole \G /g etc. world, but it doesn't
> seem to work for me.
> 
> Thanks!
> 
> Dan T.
> [EMAIL PROTECTED]
> 
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]