0

大きなテキストがあります。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

URL セグメントを見つけて、見つかったセグメントを置き換えるだけです。私は次のコードを持っています:

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

正規表現でこれを行うにはどうすればよいですか?

4

2 に答える 2

2

この正規表現を試してください:

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

content/ と /images の間の値を返します

たとえば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);
    }
}
于 2012-08-23T14:41:36.707 に答える
1

これらの特定の文字列の出現を以下に示すものに変更する必要があることを文字通り意味する場合は、次のようにすることができます。

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

ただし、これはあなたが求めているものではないと思います(正規表現について言及したように)ので、何を変更する必要があるかをより具体的にする必要があると思います。

于 2012-08-23T14:41:07.087 に答える