def prepare(rep, onlyAtEnds=False, multiOccur=True):
'''Compiles and returns a regex matching the input list of strings to replace
Note: returns two values wrapped as one; can feed tuple directly into apply
'''
if type(rep) == list:
rep = {key: '' for key in rep}
rep = dict((re.escape(k), v) for k, v in rep.items())
if onlyAtEnds:
if multiOccur:
expr = str.format("^[{0}]+|[{0}]+$", ''.join(rep.keys()))
else:
expr = str.format("{0}|{1}",
"|".join(['^%s' % key for key in rep.keys()]),
"|".join(['%s$' % key for key in rep.keys()])
)
else:
expr = "|".join(rep.keys())
pattern = re.compile(expr)
return (pattern, rep)
评论列表
文章目录