#!/usr/bin/env python from __future__ import print_function import re import sys refs = {} complete_file = "" for line in open(sys.argv[1], "r"): complete_file += line for m in re.findall("\\[\\[(.+)\\]\\]\n=+ ([^\n]+)", complete_file): ref, title = m refs["<<" + ref + ">>"] = "<<" + ref + ", " + title + ">>" def translate(match): try: return refs[match.group(0)] except KeyError: return "" rc = re.compile("|".join(map(re.escape, sorted(refs, reverse=True)))) for line in open(sys.argv[1], "r"): print(rc.sub(translate, line), end="")