Как установить фокус на поле ввода?

Как уже упоминалось, регулярные выражения не подходят для вложенных конструкций. Я приведу базовый пример, используя pyparsing :

import pyparsing # make sure you have this installed

thecontent = pyparsing.Word(pyparsing.alphanums) | '+' | '-'
parens     = pyparsing.nestedExpr( '(', ')', content=thecontent)

Вот пример использования:

>>> parens.parseString("((a + b) + c)")

Выход:

(                          # all of str
 [
  (                        # ((a + b) + c)
   [
    (                      #  (a + b)
     ['a', '+', 'b'], {}   
    ),                     #  (a + b)      [closed]
    '+',
    'c'
   ], {}
  )                        # ((a + b) + c) [closed]
 ], {}  
)                          # all of str    [closed]

(С обновлением / отступом / комментариями вручную)

Изменить: Изменено, чтобы исключить ненужные Forward, в соответствии с предложениями Пола МакГира.

Чтобы получить вывод в формате вложенного списка:

res = parens.parseString("((12 + 2) + 3)")
res.asList()

Выход:

[[['12', '+', '2'], '+', '3']]

742
задан Blackhole 6 September 2014 в 21:05
поделиться