繁体   English   中英

Python中拆分和转义的正斜杠

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM