[英]splitting and escaped forward slashes in Python
我有一个文件,其中包含格式为/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
解释转义符吗?
不是,不是 最好的选择可能是使用re.split()
,并使用正则表达式,该正则表达式使用向后查找以确保不会转义正斜杠,例如
UNESCAPED_SLASH_RE = re.compile(r'(?<!\\)/')
ptn, repl = UNESCAPED_SLASH_RE.split(line[1:])[:-1]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.