Конвертировать шаблоны маршрутов в регулярные выражения - PullRequest
0 голосов
/ 30 марта 2020

У меня есть приложение с ~ 300 услугами. Я хотел бы добавить авторизацию для указанного c подчиненного маршрута. Я создал собственный атрибут авторизации для проверки маршрутов. Я хотел бы преобразовать шаблоны маршрутов в регулярные выражения, чтобы быть уверенным, что любые будущие изменения будут автоматически применены обратно к атрибуту авторизации.

например, у меня есть маршрут.

var benefitRoute =  "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";

Я хотел бы заменить все {} и их содержимое на. *

"/employees/.*/benefit/.*/enrollments";

Однако я попытался сопоставить на \{.+\} Однако он захватывает больший перед двумя меньшими, когда Я запускаю свое регулярное выражение.

Regex.Replace(route, "\{.+\}", ".*");

Как я могу преобразовать шаблоны маршрутов в регулярное выражение.

1 Ответ

2 голосов
/ 30 марта 2020

Вы должны добавить '?' что делает квантификаторы "ленивыми", попробуйте

        var benefitRoute =  "/employees/{employeeId:Guid}/benefit/{benefitId:guid}/enrollments";
        string pattern = @"{(.*?)}";
        String result=Regex.Replace(benefitRoute, pattern, ".*");

Более подробную информацию вы можете найти здесь http://www.regular-expressions.info/repeat.html

...