次のような文字列を取得しようとしています。
$search = "ボブ・ロブロー + マーク・ハミル RT45_part12 foo_092344"
アンダースコアがRT45_part12にある場合を除き、英数字以外の文字をすべて削除します。
私が望む結果は次のとおりです。
「ボブ・ロブロー マーク・ハミル RT45_part12 foo 092344」
preg_replace("/[^A-Za-z0-9_]/", ' ', $search)
RT45_part12 を見つけるための正規表現は
\b[a-zA-Z]{2,4}[0-9]{1,5}_part[0-9]{1,5}\b
RT45_part12 にあるアンダースコアをスキップして、デリックの後のアンダースコアを置き換えるように、これら 2 つを組み合わせる方法がわかりません。先読み、後読み機能を使用する必要がありますか?