Приветствую. Не силён в регулярных выражениях, ввиду редкой необходимости их использования, но тут пришлось… По сути нужно извлечь все значения расположенные до, между и после фигурных скобок, исключая сами фигурные скобки. Имеется строка, формат которой довольно строгий и представлен следующим образом:
разделитель{заполнитель}разделитель{заполнитель}разделитель
Условия:
- строка может начинаться только разделителем;
- строка может заканчиваться как разделителем, так и заполнителем;
- цепочка чередования заполнителя и разделителя может быть сколь угодно длинной;
- заполнитель всегда находится в парных фигурных скобках;
Дополнительные условия:
- и заполнитель, и разделитель могут содержать только: латинские буквы, цифры, точка, тире, слеш и нижнее подчеркивание;
- и заполнитель, и разделитель не могут начинаться и не могут заканчиваться небуквенным символом, а также не могут содержать два и более подряд идущих небуквенных символа;
Возможно, проверку
заполнителя и
разделителя на соответствие дополнительным условиям имеет смысл сделать уже после их извлечения из строки. В любом случае, строка будет признана не валидной, если хотя бы одно условие нарушено. При этом необходимо составить регулярное выражение (если это возможно), с именованными группами (типа filler и separator), для более удобного извлечения подстрок.
Кстати, производительность не имеет значения шибко большого значения, т.к. операция будет выполняться довольно редко и с весьма незначительным количеством строк (не более 50-100), при этом длина строк не будет превышать 200-300 символов. А может проще и быстрее написать парсер?
Сразу хочу оговориться, зная любимое изречение местных авторитетов «
Google в помощь», что натыкался на разные решения, но они частичные, не могу собрать всё это дело в кучу, т.е. в цельное регулярное выражение. Заранее благодарю за ответы и содействие.