我正在尝试使用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
答案 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构建效率要高一些。但这几乎可以匹配任何东西,整数,单词,有效标识符,无效标识符,所以我对你的解析器中这种表达式的价值持怀疑态度。