使用正则表达式的缺点

最近我的经理告诉我不要太依赖Regex,因为它有很多缺点。 当我试图了解更多时,我听说它有像正则表达式这样的问题可能导致内存泄漏,因为一些对象在使用后仍继续挂在字符串引用上?

.NET RegEx“内存泄漏”调查

所以说reg-ex会导致内存开销并且如果你有其他选择则不应该使用它是正确的吗? 是否有任何其他不利于注册(除了它很难学习:))

PS我正在开发一个类似于网络爬虫的应用程序(c#.net),它提取所有href和一些其他信息,如标题,元标记等。我可以选择使用HTML Agility包而不是reg-ex。

使代码难以阅读。 大多数情况下,即使以更详细的代码为代价,最好不要使用正则表达式。 代价高昂的性能影响以及代码可读性的降低意味着在大多数情况下不使用正则表达式,尤其是简单的和复杂的情况。

为了你提到的目的(解析HTML等),简单的正则表达式无法完成工作(因为HTML不是常规语言)。 这就像拿锤子一样,一切看起来像钉子。

我对此的看法是,RegEx经常可以完成这项工作,但您需要小心不要过度使用它们。 正如他们所说,当你拥有的只是一把锤子时,每个问题看起来都像一个钉子。

在这种情况下,您正在尝试解析HTML以获取数据。 HTML解析器更具可读性,可能更可靠。 正常表达式解析HTML通常会在某些情况下失败(格式错误的HTML是大的)或者比使用HTML解析器更复杂。

我不知道内存泄漏和性能问题,但甚至忽略了我倾向于尝试将正则表达式使用降至最低。

正则表达式可以模糊您正在使用的逻辑; 有时在代码中执行它可能不那么复杂。 在代码中,您可以打破不同的逻辑测试并对每个测试进行评论,以便人们可以看到您正在做的事情的原因。