使用pyparsing从括号开始解析表达式

时间:2015-03-04 16:05:49

标签: python

我正在尝试开发一种语法,它可以解析从括号和结束括号开始的表达式。括号内可以有任何字符组合。我已经按照pyparsing的Hello World程序编写了以下代码。

from pyparsing import *

select = Literal("select")

predicate = "(" + Word(printables) + ")"

selection = select + predicate

print (selection.parseString("select (a)"))

但这会引发错误。我认为可能是因为printables也包含(),并且它与指定的()有某种冲突。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用alpha而不是printables。

from pyparsing import *

select = Literal("select")
predicate = "(" + Word(alphas) + ")"
selection = select + predicate
print (selection.parseString("select (a)"))

如果使用{}作为嵌套字符

from pyparsing import *

expr = Combine(Suppress('select ') + nestedExpr('{', '}'))
value = "select {a(b(c\somethinsdfsdf@#!@$@#@$@#))}"
print( expr.parseString( value ) )

output: [['a(b(c\\somethinsdfsdf@#!@$@#@$@#))']]

()的问题是它们被用作默认的引号字符。