Re: How to match a token not be quoted?



Gunnar Hjalmarsson wrote:
Rob Dixon wrote:
Gunnar Hjalmarsson wrote:
Zhao, Bingfeng wrote:
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'.

$line =~ s/("[^"]*")|abc/$1 ? $1 : 'd'/eg;

You need a non-greedy modifier on that Gunnar:

$line =~ s/("[^"]*?")|abc/$1 ? $1 : 'd'/eg;

Why would I need that? Are you mixing up [^"]* with .* ?

Yes. My apologies. It was 3:00am when I wrote that - I would have been
better off getting some sleep instead.

Rob
.



Relevant Pages

  • Re: How to match a token not be quoted?
    ... Rob Dixon wrote: ... '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'. ...
    (perl.beginners)
  • Re: How to match a token not be quoted?
    ... Rob Dixon 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'. ... Gunnar Hjalmarsson ...
    (perl.beginners)