in reply to ambiguous regex match
First, you're using the wrong $data variable. Second, as Corion points out, you need to protect with if.
my $data = 'blabla;tag1=12345;blabla;tag2=99999'; my $tag1; my $tag2; $data =~ /tag1=(\d+)/; $tag1 = $1 if $1; $data =~ /tag2=(\d+)/; $tag2 = $1 if $1; # # or # # the '?' in the below regex means it'll grab the closest # tag2, and ignore any beyond it ($tag1, $tag2) = $data =~ /tag1=(\d+).*?tag2=(\d+)/ if $1 && $2; print "$tag1, $tag2";
Update: I could have sworn you were using $2 in the second match. If that was the case and you edited your post, I want to point out that when doing independent matches, the second run to get a match will re-use $1. To use $2, you need both capture groups within a single regex.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: ambiguous regex match
by Laurent_R (Canon) on Jul 24, 2015 at 17:07 UTC | |
by stevieb (Canon) on Jul 24, 2015 at 17:14 UTC |