正则表达式以匹配PQL查询

时间:2014-05-06 16:47:07

标签: 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=='b' and c=="
[("a=='b'", 'and'), ('c=="')]

基本上每当输入PQL语句的新部分时,我们都会创建一个新的匹配,它适用于字符串或数字的查询。

我当前的表达式如下:

([a-zA-Z.\-_]+[=!<>]{0,2}([\"\']?[a-zA-Z\-!._ "\']*?[\"\']|[0-9]*))[ ]?(and|or|not)?[ ]?

它做得很好,但在这样的事情上失败了:

a==22 and b=='c

它认为c属于新的匹配,产生以下内容:

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

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

0 个答案:

没有答案