0

したがって、「予約語」がある長い文字列があり、データベースからの値に置き換える必要があります。

eg.

string text = "You're salary for the month of ((month)) is ((salary))

今、私がしたことは、すべての予約語を照合し、データセットを検索して、それらをそれらの値に置き換えることでした。

Regex ex = new Regex(@"(?<=\(\().*?(?=\)\))");
foreach(Match match in ex.Matches(body)){           
                string valuefromset = values.FirstOrDefault(val => val.Variable == match.Value).Value;
                    var pattern = @"(("+match.Value+"))";
                    body = Regex.Replace(body, pattern, valuefromset, RegexOptions.IgnoreCase);
                }
            }

今何が起こっているのはこれです

text = "You're salary for the month of ((April)) is (($10000))";

パターンがタグではなく単語だけを取得する理由がわかりませんでした。別の正規表現を使用する必要がありますが、特定の値を使用しますか?特定の予約語を持つことはパターンにおいて重要であるため、私はそれを使用しましたが、私が何をしているのかよくわかりませんでした。

どんな助けでも大歓迎です。ありがとう!!!

4

1 に答える 1

4

これは、置換正規表現でスラッシュをエスケープしないためです。

var pattern = @"(("+match.Value+"))";
                ^^               ^^

それらを一致させない場合は、2つのグループを作成します。これを試して:

var pattern = @"\(\("+match.Value+"\)\)";
于 2012-04-25T13:16:04.077 に答える