正则表达式替换找到的项目

时间:2012-08-23 14:35:41

标签: c# regex

我有大文字。我需要找到一个URL并用其他文本替换找到的文本。

以下是一个例子:

http://cdn.example.com/content/dev/images/some.png
http://cdn.example.com/content/qa/images/some.png
http://cdn.example.com/content/preprod/images/some.png

http://cdn.example.com/content/qa/images/some.png
http://cdn.example.com/content/preprod/images/some.png
http://cdn.example.com/content/live/images/some.png

我需要找到网址细分,只需替换找到的细分。 我有以下代码:

Regex rxCdnReplace = new Regex(@"http://cdn.example.com/content/(\w+)/", RegexOptions.Multiline | RegexOptions.IgnoreCase);
rxCdnReplace.Replace(str,new MatchEvaluator(CdnRename.ReplaceEvaluator))

如何使用正则表达式执行此操作?

2 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

(?<=content\/).+(?=\/images)

它返回content /和/ images

之间的值

E.g。链接http://cdn.example.com/content/dev/images/some.png 正则表达式返回dev,您应该将其替换为qa

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
    // This is the input string we are replacing parts from.
    string input = "http://cdn.example.com/content/dev/images/some.png";

    // Use Regex.Replace to replace the pattern in the input.
      string output = Regex.Replace(input, "(?<=content\/).+(?=\/images)", "qa");

    // Write the output.
    Console.WriteLine(input);
    Console.WriteLine(output);
    }
}

答案 1 :(得分:1)

如果您的字面意思是您需要将这些特定字符串的出现更改为下面显示的字符串,您可以执行以下操作:

str = str.Replace("http://cdn.example.com/content/qa/images/some.png", "http://cdn.example.com/content/preprod/images/some.png")   

但是,我不认为这就是你所追求的(正如你提到的正则表达式),所以我认为你需要更具体地说明需要改变什么。