如何处理正则表达式?
答案 0 :(得分:6)
正则表达式可以建模为Deterministic Finite State Machine。如果你想“处理”一个,这可能是一个很好的起点。
答案 1 :(得分:6)
正则表达式描述state machine的规则集。它通常一次移动一个字符串,根据前一个字符的内容和正则表达式中描述的内容做出决定。
任何正则表达式也可以一次写入一个字符串的字符串。其中一些可能相当简单,但是当看起来像一个简单的正则表达式时会发现正则表达式的强大功能,只需要几个lookbehinds和子组就可以在你自己的状态机中重现几千行代码。
答案 2 :(得分:2)
这个问题非常广泛。这不是一个完整的答案,但Jeff Moser在他的博客上有一篇很好的文章,介绍了.NET的正则表达式过程:How .NET Regular Expressions Really Work
我怀疑其他答案会阐明正则表达式的其他方面,除非您的问题更新为更具体。
答案 3 :(得分:2)
这取决于您所指的正则表达式。
正则表达式引擎中使用了两种常见但不同的技术:
这个MSDN article解释了在各种引擎中实现的几种技术,然后解释了.NET的实现以及微软选择他们为.NET选择的原因。
他们在您列出here列出的各种文章中更加深入。
答案 4 :(得分:1)
答案 5 :(得分:0)
尽管每个人都在谈论状态机,但你可以使用递归技术编写一个非常简单的正则表达式识别器。在Brian Kernighan的两本软件工具Pascal和The Practice Of Programming中有两个例子。