Я не могу понять это из-за жизни меня. Python 2.7.создание регулярного выражения для определения словарей
У меня есть конфигурационный файл, который что-то вроде
define something {
var val1
var val2
}
define something_else {
var val3
var val4}
...
и я хочу, чтобы соответствовать каждый «объект», начиная с «определить». Я хочу, чтобы в основном удалить один из этих объектов из файла, если последовательность внутри объекта.
До сих пор я
re.compile(r"(define.+\{\n)((.*\n)*)(\})")
, но это не соответствует все до последнего индекса, а также не соответствует }
характер.
Я также пробовал re.compile(r"(define.+\{\n)((\s*\S*)*)(\})")
, но это тоже не работает. По какой-то причине регулярное выражение захватывает все и вообще не будет закрывать скобу.
Я понимаю, что линия только с закрывающей скобкой может быть либо
\n}
или }
или (some number of spaces) }
или var valx (some number of spaces) }
, но я не думаю, что должно иметь значения.
Кроме того, файлы конфигурации предварительно проверены, чтобы убедиться, что синтаксис var/val верен.
ах, 'Добавление? после того, как квалификатор делает его исполнением в неживой или минимальной форме; как можно меньше символов. Полностью не использовал это в свою пользу. Также помогло увидеть, как вы минимизировали мое соответствие. Спасибо! – frei