c# - .NET 中的正则表达式是如何实现的?

标签 c# .net regex performance grep

我刚刚读了这个interesting article关于支持正则表达式的各种语言的实现细节。

它描述了使用非确定性有限自动机 (NFA) 与确定性有限自动机 (DFA) 的正则表达式的替代实现。它声称回溯 DFA 实现(在 Perl、Java 和其他语言中使用的版本)在某些特别“病态”的正则表达式上容易出现非常缓慢的性能。 (grep、awk 和 Tcl 仍然使用 DFA,但速度呈指数级增长)

它没有提及 .NET 框架,但我想知道 .NET(尤其是 C#)正则表达式是如何实现的,以及它们在性能方面的比较。

编辑:

既然回答者的文章提到 .NET 进行回溯,我是否可以假设它将与 Perl 和 Java 相提并论?

最佳答案

有一篇很棒的文章 here .他利用了您可以进入 .NET 框架代码并查看其功能这一事实,并解释了一切是如何工作的。这是一本很棒的读物。

关于c# - .NET 中的正则表达式是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1111092/

相关文章:

c# - 如何提高 C# 对象映射代码的性能

c# - Nhibernate 4 API 文档

c# - 将方法存储在数组中并在 C# 中调用它们

c# - 如何以编程方式将文件夹添加到用户的收藏夹(在 Windows 资源管理器中)?

.net - 托管 (.net) 应用程序中内存泄漏的最常见(并且经常被忽视)的原因是什么?

javascript - 正则表达式匹配空格不以 char 开头/结尾

javascript - 句子大小写一段文本,同时忽略其中的 html 元素

Java 正则表达式不匹配 ascii 范围之外,行为不同于 python 正则表达式

c# - 使用带有 C# 驱动程序的 ProjectionDefinition 的 Mongodb 组聚合

c# - Selenium:实例化时为 "DevTools Request: 127.0.0.1:12583/json/version failed"