我刚刚在编码生涯中遇到了一个最奇怪的问题,我在项目中使用了code highlight library,我试图自定义SQL代码查看器。我从示例中获取了一个示例表单并将其放入项目中,并在启动时将表单挂起。但是同样的示例在库中附带的示例项目中运行良好。这两个都是Winform应用程序。并且更进一步的调查显示,代码挂起在库本身,而不是样本表单中的代码
var matches = regex.Matches(text);
foreach (Match m in matches) // Here it hangup
{
...
}
但是当我运行示例winform应用程序时,同样的地方运行得像snappy一样。我很困惑。我认为像Regex这样基本的东西无论在哪个应用程序中都应该执行相同的操作。文字不长,只有几百个字符。正则表达式是一样的。除了我提取样本表单并将其放入我的项目并调用它之外,我没有做任何不同的事情。
有人可以帮助我或指出正确的方向吗?
答案 0 :(得分:1)
您认为某些“与正则表达式一样基本”的内容在实现中的表现相同是错误的,原因如下:
最有可能的是,您遇到了一个名为catastrophic backtracking的问题。图书馆内部的“悬挂”通常是由此引起的。要查明是否是这种情况以及如何纠正它,我们需要查看您的正则表达式,解释您正在尝试使用它和/或输入文本的样本,它有问题。请修改您的问题并添加这些详细信息。