pavelkarinin
@pavelkarinin
Full Stack Web Developer

Как извлечь все значения расположенные до, между и после фигурных скобок, исключая сами скобки?

Приветствую. Не силён в регулярных выражениях, ввиду редкой необходимости их использования, но тут пришлось… По сути нужно извлечь все значения расположенные до, между и после фигурных скобок, исключая сами фигурные скобки. Имеется строка, формат которой довольно строгий и представлен следующим образом:

разделитель{заполнитель}разделитель{заполнитель}разделитель

Условия:
  • строка может начинаться только разделителем;
  • строка может заканчиваться как разделителем, так и заполнителем;
  • цепочка чередования заполнителя и разделителя может быть сколь угодно длинной;
  • заполнитель всегда находится в парных фигурных скобках;

Дополнительные условия:
  • и заполнитель, и разделитель могут содержать только: латинские буквы, цифры, точка, тире, слеш и нижнее подчеркивание;
  • и заполнитель, и разделитель не могут начинаться и не могут заканчиваться небуквенным символом, а также не могут содержать два и более подряд идущих небуквенных символа;

Возможно, проверку заполнителя и разделителя на соответствие дополнительным условиям имеет смысл сделать уже после их извлечения из строки. В любом случае, строка будет признана не валидной, если хотя бы одно условие нарушено. При этом необходимо составить регулярное выражение (если это возможно), с именованными группами (типа filler и separator), для более удобного извлечения подстрок.

Кстати, производительность не имеет значения шибко большого значения, т.к. операция будет выполняться довольно редко и с весьма незначительным количеством строк (не более 50-100), при этом длина строк не будет превышать 200-300 символов. А может проще и быстрее написать парсер?

Сразу хочу оговориться, зная любимое изречение местных авторитетов «Google в помощь», что натыкался на разные решения, но они частичные, не могу собрать всё это дело в кучу, т.е. в цельное регулярное выражение. Заранее благодарю за ответы и содействие.
  • Вопрос задан
  • 206 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы