我有一个包含/pattern/replace/
形式的perl样式正则表达式的文件,我试图将其作为已编译模式及其相关替换字符串的列表读入Python。以下是我到目前为止所做的工作。
def get_regex(filename):
regex = []
fi = open(filename,'r')
text = [l for l in fi.readlines() if not l.startswith("#")]
fi.close()
for line in text:
ptn, repl = line[1:].split('/')[:-1]
regex.append((re.compile(ptn), repl))
return regex
这非常有效,直到我得到带有转义正斜杠的行,如下所示:
/$/ <\\/a>/
当我尝试拆分此字符串时,Python会返回一个包含三个元素的列表['$', ' <\\', 's>']
,而不是(希望的)['$', ' <\\/s>']
。有没有办法让replace
解释逃脱?
答案 0 :(得分:3)
不是,不。你最好的选择可能是使用re.split()
代替,使用一个使用lookbehind的正则表达式来确保不转义正斜杠,例如。
UNESCAPED_SLASH_RE = re.compile(r'(?<!\\)/')
ptn, repl = UNESCAPED_SLASH_RE.split(line[1:])[:-1]