|
|
1
2
要理解为什么你的案例表现出指数行为,最好的方法是首先对代码进行一些实验,然后尝试从中收集一些经验数据并做出假设。 首先,让我们添加一些简单的“日志记录”:
现在让我们运行一些实验,确保在每次实验之前重置计数(记住,在实际代码中要避免全局变量:)
你可以看看每一个的输出,看看为每一个生成的行数,然后问自己“递归调用的数量是如何随着字符串的加长而增长的?”(经典经验算法分析!)
我已经完成了
你可以看到它走了34步。看看输出;它应该让你对匹配的本质有一些了解。并且一定要尝试增加长度的字符串。快乐的实验。 |
|
2
2
这是一个经典的案例,通过递归下降实现正则表达式匹配会导致病理行为。 实现这一点的正确方法是将正则表达式变成一个不确定的状态机。它需要(相当多的)更多的代码,但对于任何给定的正则表达式都将以线性时间运行。 这是一个 first class article 关于这个问题。 干杯 |
|
|
SerjantArbuz · 为什么正则表达式从末尾搜索第二组? 1 年前 |
|
|
L H · 识别Pandas中正确的字符串顺序 1 年前 |
|
|
Andy Knipp · 在Java 11中遇到正则表达式问题 2 年前 |
|
|
M195 · 在整个pandas数据帧中查找部分字符串匹配的列和行 2 年前 |
|
|
Adrian · 如何在R[重复]中提取多个嵌套圆括号之间的字符串 2 年前 |