Pyparsing - 名称不以字符开头

时间:2014-05-29 22:46:39

标签: pyparsing

我正在尝试使用Pyparsing来识别一个不以$ So开头的关键字,用于以下输入:

$abc = 5 # is not a valid one
abc123 = 10 # is valid one
abc$ = 23 # is a valid one

我尝试了以下

var = Word(printables, excludeChars='$')
var.parseString('$abc') 

但这不允许任何$ in var。如何在第一个字符位置指定除$以外的所有可打印字符?任何帮助将不胜感激。

由于 作者Abhijit

1 个答案:

答案 0 :(得分:1)

在将excludeChars参数添加到Word类之前,您可以使用我用来定义“除X之外的所有字符”的方法:

NOT_DOLLAR_SIGN = ''.join(c for c in printables if c != '$')
keyword_not_starting_with_dollar = Word(NOT_DOLLAR_SIGN, printables)

这比使用Combine和NotAny构建效率要高一些。但这几乎可以匹配任何东西,整数,单词,有效标识符,无效标识符,所以我对你的解析器中这种表达式的价值持怀疑态度。