繁体   English   中英

用于解析逗号之间的 Python 指令列表的正则表达式

[英]Regular expression to parse list of Python instructions between commas

我正在编写一个解析器,在某些时候,我期待在逗号之间写入 Python 指令和/或值的列表。 例如,

n >= 5, n < 20, m == len([1, 2, 3]), m + 1 == func(myObject.myMethod());

这只是一个例子,实际上我希望能够解析任何有效的 Python 表达式。

我的语法有以下形式的规则:

EXPRESSION ("," EXPRESSION)* ";"

其中EXPRESSION是一个可以接受任何 Python 指令的正则表达式。 当然,由于逗号可能会出现在我的表达式中,我不知道如何将它用作分隔符。 尽管如此,在我看来必须有一个正则表达式,因为任何人都可以清楚地解析上面示例中的四个表达式。 有任何想法吗?

我当前的正则表达式是EXPRESSION = [^,;]+但这当然只适用于非常简单的情况; 上面的例子不能用这个来解析。

这是不可能的,因为 Python 指令中的逗号可能会被误解为分隔符,但仍会产生有效的 Python 指令。

下面是一个例子:

a = 1, b = ((2, 3), 4), a, b = b, a, b = a

这可以解释为:

a = 1
b = ((2, 3), 4), a
b = b, a
b = a

或作为:

a = 1
b = ((2, 3), 4)
a, b = b
a, b = a

或作为:

a = 1
b = ((2, 3), 4)
a, b = b, a
b = a

都是有效的代码段。 您无法知道哪个是预期的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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