codice:
$testo="__ciao__ **ciao**";
$search=array("/([_]{2})(.+)([_]{2})/","/([\*]{2})(.+)([\*]{2})/");
$replace=array("<u>$2</u>","$2");
echo preg_replace($search,$replace,$testo);

questa parte (.+) serve per prendere qualsiasi carattere 1 o più volte...