正则表达式.替换问题-自定义URL重写

本文关键字:URL 重写 自定义 替换 问题 正则表达式 | 更新日期: 2023-09-27 18:05:26

我想写我自己的301重定向。我有两根弦。一个是旧url,另一个是新url。示例在

下面

原Url:

procurement-notice-('d+).html

新url:

/Bids/Details/$1
像这样的

,我有很多新旧url。我正在做下面的工作,以匹配的url很好。其中"redirect"是一个包含新旧url的字典。

var matchedURL = redirect.SingleOrDefault(d => Regex.Match(url, d.Key, RegexOptions.Singleline).Success);

,但现在我想用新的url替换匹配的一个。

正则表达式.替换问题-自定义URL重写

你有matchedURL,其中键是旧的url正则表达式,值是新的url替换模式。

你可以使用正则表达式。替换方法,接受3个字符串参数。

using System;
using System.Text.RegularExpressions;
class App
{
  static void Main()
  {
    var input = "procurement-notice-1234.html";
    var pattern = @"procurement-notice-('d+).html";
    var replacement = "/Bids/Details/$1";
    var res = Regex.Replace(input, pattern, replacement);
    Console.WriteLine(res);
    // will output /Bids/Details/1234
  }
}

在你的例子中,代码可能是这样的:

var matchedURL = redirect.SingleOrDefault(d => Regex.Match(url, d.Key, RegexOptions.Singleline).Success);
if (matchedURL != null)
{
  var result = Regex.Replace(url, matchedURL.Key, matchedURL.Value);
}