Python 匹配PQL查询的正则表达式

Python 匹配PQL查询的正则表达式,python,regex,regex-lookarounds,Python,Regex,Regex Lookarounds,我试图找到一个正则表达式,它将一点一点地匹配PQL查询的组件。我想到的一些例子: a== [('a==')] a==22 [('a==22')] a=="b" [('a=="b"')] a=="b" and/or/not <- any of these [('a=="b"', '{logical operator}')] a=="b" or c. [('a=="b"', 'or'), ('c.')] a=="b" or c.d [('a=="b"', 'or'), ('c.d')] a==

我试图找到一个正则表达式,它将一点一点地匹配PQL查询的组件。我想到的一些例子:

a==
[('a==')]
a==22
[('a==22')]
a=="b"
[('a=="b"')]
a=="b" and/or/not <- any of these
[('a=="b"', '{logical operator}')]
a=="b" or c.
[('a=="b"', 'or'), ('c.')]
a=="b" or c.d
[('a=="b"', 'or'), ('c.d')]
a=='b' and c=="
[("a=='b'", 'and'), ('c=="')]
它认为
c
属于一种新的匹配,产生以下结果:

[('a==22', '22', 'and'), ('b==', "'"), ('c')]
相对于

[('a==22', '22', 'and'), ('b==', "'c")]

我觉得奇怪的是单引号/双引号是有效的。。。否则,解析就更简单了。看起来您正试图用正则表达式构建一个解析器,请参阅。我觉得那是个坏主意™ 但这个问题似乎有一些资源来支持它。。。(我的记忆是,您需要一种不能用正则表达式解析的1型形式语法,但我的记忆可能不清楚)。@MikeH-R并非所有形式语法都是正则表达式无法解析的,尽管在实践中,它们中的大多数都是正则表达式。你说得对,1型和0型语法通常不可与正则表达式兼容,但所有3型语法和许多2型语法都不可与正则表达式兼容。如果你可以编写你的语言来使用这些语法,它将可以用正则表达式进行解析。没错,正如我在阅读我发布的链接时发现的那样,有很多关于正则表达式解析的资源似乎非常有用。
[('a==22', '22', 'and'), ('b==', "'"), ('c')]
[('a==22', '22', 'and'), ('b==', "'c")]