0

「startingChars」で始まり「endingChars」で終わる任意の文字列の C# の文字列を置換するのを手伝ってくれる人はいますか...そのようなもの:

Regex.Replace(strToReplaceIn, "startingChars[anyNumberOfChars]endingChars", myFunction(anyNumberofChars));

ここで、strStartingChars と strEndingChars は 2 つの文字列で、myFunction が定義されています

たとえば、開始"Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ...."の結果が次のようになる場合:"Hello, I need to replace myFunctionResult("WITH_SOMETHING"), ..."

助けになる正規表現を教えてください。問題は一致する式を見つけることではなく、置換することです...どのように参照できますか

anyNumberOfChars  

式の置換パラメータに?

私はそれが十分に明確であることを願っています...ありがとう

4

3 に答える 3

2

名前付きグループを使用して、置換するコンテンツを簡単に取得し、一致評価器を使用して置換文字列を作成できます。

using System.Text.RegularExpressions;

static class Program {
    static void Main(string[] args) {
        string strToReplaceIn = "Hello, I need to replace startingCharsWITH_SOMETHINGendingChars, ....";
        string replaced = Regex.Replace(strToReplaceIn, "startingChars(?<contents>.*?)endingChars", (match) => {
            return "myFunctionResult(" + match.Groups["contents"].Value + ")";
        });
    }
}

名前付きグループ(式の(?<contents>.*?)ビット) は、式のサブパーツを参照できるようにするものであり、それがあなたが求めているものだと思います。
別の方法として、単純な group を使用することもできます。つまり、?<name>部分:を使用せずに、括弧で囲まれた式のみを使用することもできます(.*)。次に、整数インデックスで参照する必要があります。

match.Groups[1].Value

(注: Groups[0] は一致全体を表します)

于 2012-11-09T09:38:54.573 に答える
2

次のような正規表現を使用する必要があります。

abc.*xyz

次のような文字列に一致します。

abcblablablaxyz

最小一致の使用を検討してください。

abc.*?xyz

これは、最後の xyz まで検索するのではなく、最初の xyz までのみ一致します。

于 2012-11-09T09:25:30.773 に答える
0

^あなたの文字列&

^ - 文字列の始まり
& - 文字列の終わりを意味します

于 2012-11-09T09:29:03.943 に答える