Expresión regular inversa, crear cadena desde expresiones regulares

Estoy trabajando en un sitio multilingüe y también he elegido usar URL personalizadas por idioma, así que por ejemplo:

/en/cities/paris/
/nl/steden/paris/

Ambos apuntan al método del índice del controlador de las ciudades.

En cada página hay una opción para cambiar el idioma y se verá en mis rutas para que coincida con el controlador, la vista y el idioma.

Así que si estoy en la página holandesa, encontrará la url adecuada para la versión en inglés, que será "ciudades" en lugar de "steden".

Todo funcionó bien, hasta que empecé a usar expresiones regulares más complejas.

Tengo estas expresiones regulares que coincidirán con mis URL deseadas:

#^en/cities/([^/]+?)/$#
#^nl/steden/([^/]+?)/$#

En mi código, tengo acceso a la variable que se está comparando, 'paris' en este ejemplo. ¿Sería posible "anular" esta expresión regular y hacer que se imprima 'en / cities / paris /'

De lo contrario, ¿cómo podría tener enlaces a diferentes versiones de la misma página, considerando que las URL son diferentes? Preferiblemente lo tienen lo más programable posible.

En una pregunta un tanto similar, alguien respondió (http://stackoverflow.com/a/7070734/616398) que la esencia de la expresión regular es hacer coincidir un número infinito de resultados ... por lo que podría no ser posible.

Es bastante fácil pasar de una cadena / URL a un conjunto de criterios coincidentes para usar en un MVC, pero al revés ... desafortunadamente, no tanto.

Respuestas a la pregunta(1)

Su respuesta a la pregunta