class regex(object):
pattern = ''
flags = 0
def __init__(self, pattern, flags=0):
self.pattern = pattern
self.flags = int(flags)
def __mod__(self, other):
import re
if isinstance(other, str):
result = re.search(self.pattern, other, self.flags)
return result.groups() if result else None
elif isinstance(other, (list, tuple,)) and len(other) == 2:
return re.sub(re.compile(self.pattern, self.flags), other[1], other[0])
print regex('(?P<name>\w+): (?P<digit>\d+)') % 'foobar: 2008'
print regex('(?P<name>\w+): (?P<digit>\d+)') % ('foobar: 2008', 'amazing \\2')
переделал в привычный вид :D