s/\*\*([^\*]+)\*\*\s\,\s\*\*([^\*]+)\*\*(\s\,)?/(grep {index($_,'_')>=0} $1,$2)?"**$1_($2)**":$&/ge; #### while() { s/(\*\*([^\*]+)\*\*\s\,\s\*\*([^\*]+)\*\*(\s\,)?)/(grep {index($_,'_')>=0} $2,$3)?"**$2_($3)**":$1/ge; print; }