我有一些过程,它运行在一些包含大量奇怪数据的文件上。该过程需要找到一些字符串并将其替换为其他内容。这是功能:
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 异常,但它没有,它只是卡住了。我等待它响应几个小时,但它没有响应。
有什么想法可以解决这个问题吗?
编辑:谢谢大家。
老实说,我在项目中继承了这段代码,现在试图弄清楚发生了什么。我不知道为什么有人这样做。