あなたは試してみたがうまくいかなかったと言っているので、これを試してください:
$str = "For GC3J26P: Wise Lake II (Traditional)";
preg_match('/(?<=:).*(?=\()/', $str, $str);
if ($str) echo $str[0];
暗く、しかし美しい REGEX の世界に慣れていない場合は、ここで何が起こっているのか説明させてください。
それはすべてパターンについてです。私たちのパターンは、一致するもの、つまりキャプチャで受け入れられるものと受け入れられないものを定義します。
それ以上に、それは私たちの試合の直前に何をすべきかを述べています。これらは、それぞれ後読みアサーションおよび先読みアサーションと呼ばれます。これらのアサーションは、一致するポイントのアンカーです。キャプチャされた一致自体には寄与しません。
したがって、パターンは次のように変換されます。
1) コロンの後に一致を開始します (ただし、一致にコロンを含めないでください)
2) 次に、任意の文字 (改行やその他の特定の特殊文字を除く) を 0 回以上許可してキャプチャします。
3) 開き括弧まで (ただし含まず) 一致する
私たちのパターンは貪欲と呼ばれるものです。私たちの場合、これは、一致させたい部分文字列自体にコロンまたはブラケットが含まれている場合、これは問題ではなく、問題が発生しないことを意味します。SOME コロンから SOME 開始ブラケットまで有効な一致が利用可能である限り、すべて問題ありません。(注: 貪欲な動作は、必要に応じて変更できます)。
REGEX には、はるかに多くの機能があり、好きでも嫌いでもあります。興味があれば、一読することをお勧めします。入った時の満足度は高いです。
そして、就寝時間です。