Pyparsing - имя не начинается с символа

Я пытаюсь использовать Pyparsing для определения ключевого слова, которое не начинается с $ Так для следующего ввода:

$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') 

Но это не позволяет $ в VAR. Как указать все печатаемые символы, кроме $, в первой позиции символа? Любая помощь будет оценена.

Спасибо Абхиджит

1 ответ

Решение

Вы можете использовать метод, который я использовал, чтобы определить "все символы, кроме X", прежде чем я добавлю параметр excludeChars в класс Word:

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

Это должно быть немного эффективнее, чем создание с Combine и NotAny. Но это будет соответствовать практически чему угодно, целым числам, словам, действительным идентификаторам, недействительным идентификаторам, поэтому я скептически отношусь к значению такого рода выражений в вашем парсере.

Другие вопросы по тегам