正则表达式快吗?

正则表达式功能不是因为快而广泛使用,而是可以实现一些复杂的搜索

正则表达式的匹配可以用有限状态自动机实现,有时候会比较快。但是比起固定字符串是会慢一些的(时间常数偏大),有些情况下可以用通常常数更小的KMP等算法。

主要还是因为正则匹配是通用算法,所以会引入很多额外的判断和分支,或者也有很多回溯问题,导致时间常数偏大。

正则表达式时间复杂度

NFA构造O(n),匹配O(nm)
DFA构造O(2^n),最小化O(kn'logn')(N'=O(2^n)),匹配O(m)

n=regex长度,m=串长,k=字母表大小,n'=原始的dfa大小

以上参考知乎的问答

猜你喜欢

转载自blog.csdn.net/moasad/article/details/120781675