We’ll cover specific adjustments below, but we have to note that some deprecations and behavior changes do not necessarily have an error message that directly points to the underlying issue.
LEUCHTTURM 1917 Notebook
。下载安装 谷歌浏览器 开启极速安全的 上网之旅。是该领域的重要参考
Copyright © ITmedia, Inc. All Rights Reserved.
▲图片来源:X@DerekNee
Lazy DFAs (2010) are a clever optimization to mitigate the O(2^m) blowup of DFA construction, by only constructing the states that you actually visit. lazy DFAs reduce the theoretical automata construction time to either O(2^m) or O(n), whichever is lower. you could argue that it’s theoretically no longer linear time, since you could have a regex that creates a new state for every character in the input, but in practice you will keep revisiting the same states. for all intents and purposes it behaves more like O(n) with some initial wind-up time. the main downside of lazy DFAs is that they are more complex to implement, and you have to ship a compiler as part of your regex algorithm. i want to highlight Rust regex and RE2 as excellent implementations of this approach, which you can also see in the benchmarks.