Я думаю, что шаблон может быть упрощен для ваших примеров данных, потому что он содержит лишние структуры группировки, и вы можете опустить отрицательный прогноз в начале, утверждая, что строка не содержит {
, }
или );
[ 1121]
(?:copyright[ \t]*)?(?:©|\(c\)|(?:169|xa9;)|©)[ \t]+(?:19|20)[0-9]{2} Company(?: All Rights Reserved)?
Вы можете расширить шаблон в соответствии со своими требованиями.
Это будет соответствовать
(?:
Группа без захвата copyright[ \t]*
Соответствие авторскому праву, совпадение с 0+ пробелами или табуляцией )?
Закрыть группу без захвата и сделать ее необязательной (?:
Группа без захвата ©|\(c\)|(?:169|xa9;)|©
Соответствовать любому из перечисленных элементов в чередовании )[ \t]+
Закрыть группу без захвата и сопоставить более 1 раза пробел или символ табуляции (?:19|20)[0-9]{2} Company
сопоставить 9 или 20, за которыми следуют 2 цифры (?: All Rights Reserved)?
При желании сопоставить Все права защищены Попробуйте это:
var httpContext = new HttpContextWrapper(HttpContext.Current);
var requestContext = new RequestContext(httpContext);
var urlHelper = new UrlHelper(requestContext, new RouteData()));
Надеюсь, это поможет
ОБНОВЛЕННЫЙ:
Предыдущее не корректно (я отправил его от своей памяти). Попробуйте это вместо этого (это работает в одном из моих проектов):
var httpContext = new HttpContextWrapper(HttpContext.Current);
var requestContext = new RequestContext(httpContext, new RouteData());
var urlHelper = new UrlHelper(requestContext);
new RouteData()
использует просто только для RequestContext
инициализация и new UrlHelper(requestContext)
на самом деле вызовы new UrlHelper(requestContext, RouteTable.Routes)