#!/usr/bin/env python import sys, re, itertools r_single = re.compile(r"r'[^'\\]*(?:\\.[^'\\]*)*'") r_double = re.compile(r'r"[^"\\]*(?:\\.[^"\\]*)*"') def main(): names = sys.argv[1:] regexen = {} for name in names: f = open(name) for line in f: for r_regexp in (r_single, r_double): for regexp in r_regexp.findall(line): if regexen.has_key(regexp): regexen[regexp].add(name) else: regexen[regexp] = set([name]) f.close() for regexp in sorted(regexen.keys(), key=len): print regexp, '-', ', '.join(sorted(regexen[regexp])) if __name__ == '__main__': main()