多くの奇妙なデータを含むいくつかのファイルに対して実行されるプロセスがあります。このプロセスでは、文字列を見つけて別のものに置き換える必要があります。関数は次のとおりです。
private static string ReplaceRegex(string inputText, string regex, string replacement)
{
return (replacement != null)?new Regex(regex, RegexOptions.IgnoreCase).Replace(inputText, replacement).Trim(): string.Empty;
}
ほとんどの場合、これは適切に機能しますが、この関数に 3491 文字の長さの inputText と、この文字列を正規表現として渡すと、次のようになります。
"\[HYPERLINK\]\s*(?:\<[\s\S]*?\>)*\s*([\s\S]*?)\s*(?:\<[\s\S]*?\>)*\s*\[\/HYPERLINK]\s*(?:\<NO1\>)?\s*(?:\<WC1?\>)?\s*\[URL\]\s*(?:\<NO1?\>)?\s*(?:\<WC1?\>)?\s*([\s\S]*?)\s*(?:\<NO1?\>)?\s*(?:\<WC1?\>)?\s*\[\/URL\](?:\<NO1?\>)?(?:\<WC1?\>)?"
プロセスが停止します。
システムが OutOfMemory 例外をスローするのを待っていましたが、そうではなく、スタックするだけです。何時間も応答を待っていましたが、応答しませんでした。
これを解決する方法はありますか?
編集:みんなありがとう。
正直なところ、私はこのコードをプロジェクトに継承し、現在何が起こっているのかを把握しようとしています。そして、なぜ誰かがこのようにしたのかわかりません。