LaTeX では、この式\o{a}{b}は、演算子 'o' が 2 つの引数 a と b を取ることを意味します。LaTeX も を受け入れます\o{a}。この場合、2 番目の引数を空の文字列として扱います。
ここで、正規表現\\\\o\{([\s\S]*?)\}\{([\s\S]*?)\}を文字列と照合しようとします\o{a}\o{a}{b}。そうでない場合は、文字列全体が一致すると誤解します。(この文字列の正しい解釈は、部分文字列\o{a}{b}のみが一致するということです。) ポイントは、最初の } の後に { 以外の何かがある場合、それは一致しないことを PHP に認識させる方法を知る必要があるということです。
どうすればいいですか?
編集: 演算子の引数には、記号\と{を含めることができます}。しかし、この場合、文字列全体が一致しない理由は、中括弧がa}\o{aLaTeX の規則に準拠していないためです (たとえば、 の{前に来る必要があります})。そのためa}\o{a、演算子の引数にすることはできません...
Edit2 :一方、有効な引数である\o{{a}}{b}ため、一致する必要があります。{a}