Re: How to match a token not be quoted?



Zhao, Bingfeng wrote:
Hello,
I want to a cure regex that match following requirements: given $line =
'abc abc "abc abcc" abcc', I want to replace all instances of "abc" that
not in quotation with, say 'd', so I expect I get 'd d "abc abcc" dc'.
What should I write my regex? I try some and referred cook book also, no
solution. Thanks in advance.

The program below does what you require.

HTH,

Rob


use strict;
use warnings;

my $str = 'abc abc "abc abcc" abcc';

my @str = split /("[^"]*?")/, $str;

for (my $i = 0; $i < @str; $i += 2) {
$str[$i] =~ s/abc/d/g;
}

$str = join '', @str;

print $str, "\n";

**OUTPUT**

d d "abc abcc" dc
.



Relevant Pages

  • How to match a token not be quoted?
    ... I want to a cure regex that match following requirements: ... not in quotation with, say 'd', so I expect I get 'd d "abc abcc" dc'. ... Bingfeng ...
    (perl.beginners)
  • Re: How to match a token not be quoted?
    ... Zhao, Bingfeng wrote: ... not in quotation with, say 'd', so I expect I get 'd d "abc abcc" dc'. ... Gunnar Hjalmarsson ...
    (perl.beginners)
  • Re: How to match a token not be quoted?
    ... Zhao, Bingfeng wrote: ... not in quotation with, say 'd', so I expect I get 'd d "abc abcc" dc'. ... What should I write my regex? ...
    (perl.beginners)