Es tarde, ahora no puedo mirarme esas funciones aunque lo veo excesivo para un problema tan diminuto.
El BBCode es [f]codigo[/f], ese codigo que son dos letras, las capturo mediante un:
Luego ese parametro lo envio a una funcion que lo envia a otra y esta ultima busca ese codigo en un array, al buscarlo el PHP me salta diciendome que efectivamente no hay una posicion en el array con valor $1 o \1.
Mi conclusion es que dichas variables solo sirven para imprimir informacion, no para manejarla mediante funciones.
La pregunta es, hay alguna funcion que capte el valor de las variables de preg_replace?