Я обычно сталкиваюсь с множеством условий и / или циклов для анализа регулярного выражения и интерполяции значений обратно в его группы захвата, и ищу опытные ответы для решения этой проблемы, надеюсь, простым способом.
Например, учитывая шаблон регулярного выражения, например X(?<xid>\d+)-(?<xsub>\w+)\.xml
, имеющий именованные группы захвата " xid " и " xsub ", предназначенные для соответствия именам файлов, таким как: X1- foo.xml , X555-bar.xml и т. д., если они снабжены аргументами: int xid=999, string xsub="baz"
, я хочу интерполировать эти значения в группы шаблонов, чтобы создать правильное имя файла: X999-baz.xml
Для простоты явные захваты не являются вложенными.
без строки. Формат :
Эту концепцию легко реализовать с помощью элементов формата .NET String, таких как String.Format("X{0}-{1}.xml", xid, xsub)
, однако у меня уже есть шаблон Regex для анализа этих значений из любой строки имени файла, и я хочу использовать этот же шаблон для перехода в противоположном направлении путем восстановления имя файла с ним, для точности. Если мне требуется шаблон регулярного выражения для синтаксического анализа значений из строки, но строка с элементами формата для восстановления имени файла, требуется использовать два вида различных синтаксисов, создавая большую вероятность возникновения ошибки вручную при их написании - это слишком легко ошибочно создать строку элемента плохого формата, которая не восстанавливает должным образом результат сопоставления с шаблоном регулярного выражения, или наоборот.