簡體   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