Мне нужно обработать файл с набором строк в следующем формате:
{name:value}
- Имя может иметь
:
, которое экранируется с помощью \
. -
:
является необязательным, в этом случае необходимо прочитать только имя. - Если
:
нет, значение отсутствует.Значение может также содержать }
, которое экранируется с помощью \
.
Итак, допустимые значения:
{john:nice person}
{john}
Я использовал это регулярное выражение:
{(?<name>.*?(?=(?<!\\)\:))(?<separator>:?)(?<value>.*?(?=(?<!\\)\}))}
, который работает для первого формата, но не работает, если формат {имя} без разделителя и значения.Любые идеи, как я могу изменить регулярное выражение для чтения обоих форматов?