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