我正在尝试开发一种语法,它可以解析从括号和结束括号开始的表达式。括号内可以有任何字符组合。我已经按照pyparsing的Hello World
程序编写了以下代码。
from pyparsing import *
select = Literal("select")
predicate = "(" + Word(printables) + ")"
selection = select + predicate
print (selection.parseString("select (a)"))
但这会引发错误。我认为可能是因为printables
也包含(
和)
,并且它与指定的(
和)
有某种冲突。
这样做的正确方法是什么?
答案 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@#!@$@#@$@#))']]
()的问题是它们被用作默认的引号字符。