0

の検索を行うなど、ワイルドカードを使用してさまざまな文字列を検索しますtest0?(の後にスペースがあります?)。検索によって生成される文字列は次のとおりです。

test01 
test02 
test03 
(and so on)

置換テキストは、たとえば次のようになります。

test0? - 

上記のワイルドカードはtest0? -、1、2、または 3... を表します。

したがって、置換文字列は次のようになります。

test01 - 
test02 - 
test03 - 

string pattern = WildcardToRegex(originalText);
fileName = Regex.Replace(originalText, pattern, replacementText);

public string WildcardToRegex(string pattern)
{
    return "^" + System.Text.RegularExpressions.Regex.Escape(pattern).
        Replace("\\*", ".*").Replace("\\?", ".") + "$";
}

問題は、元の文字と追加された文字を使用して新しい文字列を保存することです。文字列を検索し、文字列を操作してオリジナルを保存することもできますが、オーバーヘッドが大きすぎるようです。もっと簡単な方法があるはずです。

ご意見ありがとうございます。

編集:

ワイルドカード ? を使用して文字列を検索します。可能な文字列は次のとおりです:
test01 someText
test02 someotherText
test03 moreText

正規表現を使用すると、検索文字列パターンは次のようになります:
test0? -
したがって、各文字列は次のようになります。
test01 - someText
test02 - someotherText
test03 - moreText

正規表現のワイルドカード「?」に置き換えられた文字を保持する方法

私のコードが立っているので、それはテストとして出てきますか? - someText
それは間違っています。

ありがとう。

編集番号 2

まず、皆さんの回答と指示に感謝します。それは助けになり、私を正しい軌道に導きました。今では、正確な質問をより適切に行うことができます。
それは置換と関係があります。

正規表現の後にテキストを挿入します。

私が提供したサンプル文字列は、常にその形式であるとは限りません。私は置換を検討してきましたが、構文が正しくないようです。そして私はVS 2008を使用しています。

他に提案はありますか?

ありがとう

4

4 に答える 4

2

「test0?」を「test0? -」に置き換えたい場合は、次のように記述します。

string bar = Regex.Replace(foo, "^test0. ", "$0- ");

ここで重要なのは、一致したテキストを含む$0 置換です。

したがって、私があなたの質問を正しく理解していれば、あなたはあなたreplacementText"$0- ".

于 2013-08-21T15:43:47.903 に答える
0

一致した文字列の任意の部分をキャッチし、replace ステートメント内の任意の場所に配置できます。記号 $ の後にキャッチされた要素のインデックスを続けます (インデックス 1 から始まります)。

括弧「()」で要素をキャッチできます

例:

XYZ が 3 桁の数字である testXYZ を含む複数の文字列があり、たとえば、3 桁を反転して testZYX に置き換える必要がある場合は、次のようにします。

string result = Regex.Replace(source, "test([0-9])([0-9])([0-9])", "test$3$2$1");

したがって、あなたの場合、それを行うことができます:

string result = Regex.Replace(source, "test0([0-9]) ", "test0$1 - ");
于 2013-08-21T16:58:58.327 に答える