在 python 中使用正则表达式从字符串表达式中提取变量名称

Extract variable names from the string expression using regex in python

我在字符串中有一个代数表达式。我想从表达式中提取变量名。变量名称应遵循 python 变量命名规则。 (应该是字母或数字的组合,不能以数字开头,可以有下划线等)[=​​13=]

示例:

formula = 'value1 * 5 + value_2 /4'

它应该给出 ['value1', 'value_2']

的结果

而不是正则表达式 - 如果可能的话 - 我会使用 ast 模块来解析 Python 的代码本身。这意味着你不必担心字符串 literals/other 的东西,如果解析失败,你会得到一个错误,这意味着它是一个不完整或无效的语句:

import ast

formula = 'value1 * 5 + value_2 /4'
names = [
    node.id for node in ast.walk(ast.parse(formula)) 
    if isinstance(node, ast.Name)
]
# ['value1', 'value_2']