regex - extraction perl -
i have file 1.txt below content
f1,f2,[as1,as2],[as3,as4]
f3,f4,f5,[as5,as6]
i require write regex in perl should change delimiter ',' inbetween [' , '] | .
i tried below, did not work.
@qr = $st = /\{(.*)(\|)+\}/; where $st has input string.
for versions of perl older perl 5.14, can't use regex like
echo "[as1,as2,as3],[as4,as5]" | perl -lpe 's/(?:\[|\g(?!^))[^]]*?\k,/|/g' see online demo.
pattern details:
(?:\[|\g(?!^))- either literal[or end of previous match (\g(?!^))[^]]*?- 0 or more chars other], few possible, matched\k- whole match value dropped,- comma lands in match (that replaced|).
for perl version 5.14 , newer (where r modifier appeared), may match [...] substrings \[[^][]+] regex (that matches [, 1+ chars other [ , ], , ]) , perform replacements inside these matches:
echo "f1,f2,[as1,as2],[as3,as4]" | perl -lpe 's/(\[[^][]+])/$1=~s#,#|#gr/ge' # => f1,f2,[as1|as2],[as3|as4] see online demo.
Comments
Post a Comment