Python 一种匹配包含括号的Lisp字符的方法

Python 一种匹配包含括号的Lisp字符的方法,python,regex,parsing,match,regex-lookarounds,Python,Regex,Parsing,Match,Regex Lookarounds,作为编译器项目的一部分,我正在用Python编写一个Lisp解析器。我的标记器的工作原理如下: def标记化(文件名): 打开(文件名为“r”)作为文件: comment\u free=删除\u注释(file.read()) 返回注释\u free.replace(“(”,“(”).replace(“),”).split() Lisp字符有点不同:字符a将是\a,(将是\35;\(,等等)。对于包含左括号或右括号的字符,标记器将它们错误地分成两部分(\和(或)) 我可以将字符指示符与[^\]匹

作为编译器项目的一部分,我正在用Python编写一个Lisp解析器。我的标记器的工作原理如下:

def标记化(文件名):
打开(文件名为“r”)作为文件:
comment\u free=删除\u注释(file.read())
返回注释\u free.replace(“(”,“(”).replace(“),”).split()
Lisp字符有点不同:字符
a
将是
\a
将是
\35;\(
,等等)。对于包含左括号或右括号的字符,标记器将它们错误地分成两部分(
\

我可以将字符指示符与
[^\]
匹配,将括号与
\(\124;\)匹配
,但我如何创建一个模式来检查代码的一部分是否以字符指示符开头,后面是否有左括号或右括号?如果我可以创建这样一个模式,我可以用一个有空格的括号来替换所有这样的实例。我想
([^#\\\])(\(\(\\)*
可以,但并非在所有情况下都有效。精通regex的人知道如何解决这个问题吗

我如何创建一个模式来检查代码的一部分是否 不以字符指示符开头,后面是左或右 括号

您可以使用负回溯来检查指示器是否不在左侧,并使用字符类而不是替换来匹配

(?<!#\\)[()]

(?<![#\\])[()]