Разбираю регулярным выражением файл шаблонов *.st. При помощи паттерна [^{]+}$ получаю текст между фигурными скобками, включая скобку } в конце строки. Как от нее избавиться?
---
А если так [^\{]+"(?=}$)
---
V_V_V, пока не силен в регулярных выражениях, но попробовал бы так: ^{[^{]+[^}]}$
---
Не сработало. Добавился символ { и в начале строки.
Тестирую тут: http://www.regexr.com/
---
V_V_V, [^{^{+}$^}] или [^{+^}].
---
Эти варианты разбирают до символа, убирая фигурные скобки. А нужно получить строку целиком между {}. Причем у строк, которые начинаются на {.
(5) Ну файл примера не проблема. Он есть в любом каталоге bin установленной 1С. Называется gentempl_ru.st - там шаблоны по-умолчанию. Его можно открыть в любом текстовом редакторе, и скопировать в окно http://www.regexr.com/ - так нагляднее получить результат.
---
Ех видеть бы файл и знать что надо отбирать - было бы проще угадывать ))) Может что-то такое [^{][^}]+
---
Вот мой вариант [^{]+}$ как раз выбирает ТОЛЬКО необходимые мне строки. Но с последними }. Второй день мучаюсь, убрать не могу...
---
V_V_V, [^{]([^}]*)
---
Не оно, так выбирается весь текст с отдельными }.
---
Да, если пользоваться http://www.regexr.com/ в правом верхнем углу нужно выставить флаг multiline - в шаблонах текст может быть многострочным.
---
Если только от последней скобки избавитсья, то так вроде можно http://regexr.com/3d6to
---
Не везде убрало.
КонецПопытки;"}
"Получить",0,0,"","Константы.<?"""", Константа>.Получить()"}
---
И конец текста как индикатор - там всегда много } идут подряд. При таком паттерне убрало только последний
---
V_V_V,
При таком паттерне убрало только последний
Разве вы не так описали задачу?
---
Похоже Вы правы, приношу извинения. Имелось ввиду получить текст между {}, а сами скобки убрать. То что их может быть несколько подряд - упустил.
(16) Удалось закрыть вопрос одной строкой, о чем я подозревал, но никак не получалось.

Спасибо всем откликнувшимся!
---
V_V_V, если первый работает, то заключи просто необходимый текст в скобки, типо ([^\{]+)\}$, а затем получи необходимый текст, обращаясь через submatches(0)
---
А если так [^\{]+"(?=}$)
---
А это кажется оно и есть! Благодарю!
---
6есик, я бы немного подрправил на нежадный [^\{]+?(?=\})
---
Этот паттерн не отбрасывает скобку, а выводит отдельно. Вариант (14) отрабатывает как надо. Разве что \ кажется необязателен, работает и с ним, и без него - но то уже мелочи.
---
V_V_V, вы уверены? мой паттерн практически не отличается от предыдущего, за исключение того, что я не ограничиваюсь концом строки,
попробуйте им распознать вот такую строку

{"{"Движения",0,0,"","Движения.<?""Выбор регистра"", ОбъектМетаданных, ""РегистрСведений"", ""РегистрНакопления"", ""РегистрБухгалтерии"", ""РегистрРасчета"">"}"}
---
Проверил. В результат выводит 2 строки:
Строка1 - "Движения",0,0,"","Движения.<?""Выбор регистра"", ОбъектМетаданных, ""РегистрСведений"", ""РегистрНакопления"", ""РегистрБухгалтерии"", ""РегистрРасчета"">"
Строка2 - }"
2-я не нужна, поэтому модернизировать вариант 6есик не надо :)
---
По идее можно еще так [^\{\}]+?(?=\}), или используя группы вот так \{([^\{\}]+?)(?=\})
---
Первый вариант вывел 2-й строкой символ ", а второй вариант захватил второй символ {. Хотя второй вариант уже можно дополировать, спасибо!