Creando un motor de plantillas simple pero flexible

Estoy tratando de construir un motor de plantillas básico. Al igual que los motores de plantillas ya disponibles como código abierto, estoy usando técnicas de búsqueda y reemplazo.

Sin embargo, como la búsqueda y el reemplazo tienen que estar codificados, no es tan flexible. Lo que quiero decir es que, como ejemplo, estoy usando algo como esto

$templateMarkup = '<div class="title">{_TITLE_}</div>';
$renderedMarkup = str_replace("{_TITLE_}",$title,$templateMarkup);
echo $renderedMarkup;

Como puede ver, está codificado. Por lo tanto, tengo que conocer a propósito todos los marcadores de posición para lograr un renderizado exitoso.

Soy un poco débil en expresión regular. Pero sé que si puedo desarrollar una expresión regular, que puede coincidir con todo el texto que comienza con{_ y terminando_} y obtener el valor entre ellos, es posible que pueda crear un motor de plantillas flexible.

Necesito ayuda con la expresión regular.

Si estoy yendo completamente por el camino equivocado, por favor, avíseme.

Para aquellos que piensan que estoy reinventando la rueda. Aquí está mi explicación

Templating engines, that are already available are quite unnecessarily complex. 
My requirements are simple and so I am builidng my own simple engine. 

Respuestas a la pregunta(3)

Su respuesta a la pregunta