我正在使用正则表达式以字符串格式查找和替换 python 表达式中的变量。我不希望替换的“var”成为另一个函数或变量名的一部分。(我禁止在 expr 和 expr.replace("var", etc.) 中使用 if 'var' 的解决方案)。
因此,我使用以下正则表达式检查前面的字符(允许)和后面的字符(允许):
pattern = re.compile(r'(^var)(?=\+|\-|\*|\/| |$)|(?<=\+|\=|\[|\-|\*|\/|,| |\()var(?=\+|\-|\*|\/|$| |,|\))')
ô_O,它似乎很复杂,但它适用于以下测试,将 'var' 替换为 '###'
expr = ' var + variable + avar + var[x] + fun(var,variable) + fun2(variable, var, var1) + fun3(variable,var)+ var -var/var+var*var*(var)'
expected = ' ### + variable + avar + var[x] + fun(###,variable) + fun2(variable, ###, var1) + fun3(variable,###)+ ### -###/###+###*###*(###)'
我使用正则表达式:
- 检查 'var' 是否在表达式中
- 替换表达式中的 'var'
- 检查被替换后'var'是否不在表达式中。
if pattern.search(expr):
new_expr = re.sub(pattern, '###', expr)
assert not pattern.search(new_expr), 'Replace failed'
我经常使用代码,我想知道是否存在更简单/更快的东西?