I'm doing something similar now - I've wrapped add_route, and the wrapper expands the {foo} into explicit non-greedy regexs:
def add_dot_route(config, name, pattern, *a, **kw):
"Permit routes with dots like pylons, eg {entity}{.format}"
dotnames = re.findall(r'{\.([^}]+)}', pattern)
if dotnames:
# Replace {field} with an explicit non-greedy version so {.format} works
pattern = re.sub(r'\{([_a-zA-Z][_a-zA-Z0-9]*?)\}', r'{\1:(?:[^/]+?)}', pattern)
pattern = re.sub(r'\{\.([_a-zA-Z][_a-zA-Z0-9]*?)\}', r'{\1:(?:\.[^/.]+)?}', pattern)
config.add_route(name, pattern, *a, **kw)
I could probably simplify the regex subs (and collapse them into a single re.sub). The result doesn't work quite as well as pylons, though (the view sees the leading dot).