有没有人在学习更高级的正则表达式方面有一些很好的资源
我一直遇到问题,我想确保某些内容没有用引号括起来
即。我试图创建一个表达式,它将匹配包含相等的python文件中的行,即
a = 4
这很容易,但我无法设计一个表达式,能够将多个术语或包含在引号中的术语分开:
a, b = b, a
a,b = "You say yes, ", "i say no"
答案 0 :(得分:4)
答案 1 :(得分:1)
认为您必须将表达式标记为正确评估,但您可以使用以下正则表达式检测模式
r'\s+(\w+)(\s*,\s*\w+)*\s*=\s*(.*?)(\s*,\s*.*?)*'
如果组(2)和组(4)不为空,则必须对表达式进行标记化
请注意,如果您有
a,b = f(b,a),g(a,b)
很难分析
答案 2 :(得分:1)
Python有一个很棒的Language Reference,其中还包含descriptions of the lexical analysis and syntax。
在您的情况下,两个语句都是assignments,左侧是list of targets,右侧是list of expressions。
但是由于该语法部分的一部分是无上下文而不是常规的,所以你不能使用正则表达式(除非它们支持某种递归模式)。因此,最好使用正确的解析器as Jonas H suggested。