Python 正在分析用户表达式以查找格式错误
用户提供一个包含Python表达式的字符串:a==1,1和{b==2或c==foo} 我正在尝试编写一个检查以下规则的解析器: 逻辑表达式或and前后需要有空格 在花括号前后需要有一个空格 表达式中不应有空格a==1,1无效 我找到了那个解析器模块,但我不确定我是否理解它 通过多个正则表达式逐个读取字符串并确定是否满足规则来建立所有规则是非常繁琐的Python 正在分析用户表达式以查找格式错误,python,regex,parsing,Python,Regex,Parsing,用户提供一个包含Python表达式的字符串:a==1,1和{b==2或c==foo} 我正在尝试编写一个检查以下规则的解析器: 逻辑表达式或and前后需要有空格 在花括号前后需要有一个空格 表达式中不应有空格a==1,1无效 我找到了那个解析器模块,但我不确定我是否理解它 通过多个正则表达式逐个读取字符串并确定是否满足规则来建立所有规则是非常繁琐的 解决这个问题最优雅的方法是什么?我想说的最优雅的方法是使用真正的解析器,结合Python的易用性 对于小项目来说,这可能有点过头了,但开始并不难,而
解决这个问题最优雅的方法是什么?我想说的最优雅的方法是使用真正的解析器,结合Python的易用性
对于小项目来说,这可能有点过头了,但开始并不难,而且可以在语法上有很大的增长。软件需求似乎总是朝一个方向增长,所以我建议尝试一下。在Perl中,它看起来会像这样/^[\w\d]+| 4,?4+==?3 | \{1\}和|或{1\}$/我猜没有经过测试。我不知道Python是否支持这样的表达式。你的问题与Python会考虑语法错误无关,所以我重新修改了你的问题并清理了一下。如果您确实想检查语法而不是格式,请编辑您的问题以澄清。@agf:是的,我应该提到格式错误而不是语法错误。感谢您的更正。所使用的字符串是否可以包含任何Python表达式,或者仅包含与上述示例类似的子集?标识符可能只是单个字符,也可能是糖果或工作之类的东西?