正则expression式的复杂性是什么?
在string上执行正则expression式比较所需的string长度是多less?
答案取决于“正则expression式”究竟是什么意思。 经典正则expression式可以被编译成确定性有限自动机 ,它可以在O(N)
时间内匹配一个长度为N
的string。 正则expression式语言的某些扩展改变了这种情况。
您可能会发现以下感兴趣的文档: 正则expression式匹配可以简单而快速 。
无界的 – 你可以创build一个永不终止的正则expression式,在一个空的inputstring。
如果你使用正常(TCS:没有反向引用,连接,交替,Kleene星)regexp和正则expression式已经编译,那么它是O(n)。
如果你正在RegEx上寻找严格的渐近边界(不考虑expression式本身),那么就没有一个。 正如亚历克斯指出的,你可以创build一个正则expression式是O(1)或正则expression式是欧米茄(无限)。 作为一个纯粹的mathalgorithm,正则expression式引擎太复杂了,不能进行任何forms的渐近分析(除了这样的分析基本上是毫无价值的事实)。
一个特定的expression式的增长率(因为它确实构成了一个algorithm)将会更有意义,但不一定更容易分析。