I want to match two different string and output should come in $1 and $2,
According to me in this example, if $a is ‘xy abc’, then $1 should be ‘xy abc’ and $2 should ‘abc’, but ‘abc’ part is coming in $3.
Can you please help me to writing a regex in that $1 should have whole string and $2 should
have second part.
I am using perl 5.8.5.
my @data=('abc xy','xy abc');
foreach my $a ( @data) {
print "\nPattern= $a\n";
if($a=~/(abc (xy)|xy (abc))/) {
print "\nMatch: \$1>$1< \$2>$2< \$3>$3<\n";
}
}
Output:
perl test_reg.pl
Pattern= abc xy
Match: $1>abc xy< $2>xy< $3><
Pattern= xy abc
Match: $1>xy abc< $2>< $3>abc<
Because only one of captures
$2and$3can be defined, you can writewhich gives the output