21、正则表达式回溯机制与贪婪性深度解析

正则表达式回溯机制与贪婪性深度解析

1. 回溯机制的形象类比

回溯机制就像在道路的每个岔口留下一堆面包屑。当你选择的路径是死胡同时,你可以沿着原路返回,直到遇到一堆面包屑,它指示着一条未尝试过的路径。如果这条新路径也是死路,你可以继续回溯到下一堆面包屑,如此反复,直到找到通往目标的路径,或者耗尽所有未尝试的路径。

在正则表达式引擎中,有很多情况需要在两个或多个选项之间做出选择。例如,当遇到 ...x?... 时,引擎必须决定是否尝试匹配 x ;而遇到 ...x+... 时,引擎至少要尝试匹配一次 x ,因为 + 要求至少匹配一次。每次做出决策时,引擎都会留下一个虚拟的“面包屑堆”,提醒自己还有另一个选项(匹配或不匹配)在该点仍然可行。

2. 一个简单的回溯示例

以正则表达式 to(nite;knight;night) 匹配字符串 hot tonic tonight! 为例:
- 从字符串开头尝试匹配 t ,失败,引擎移动到第二个位置重试,仍然失败,再移动到第三个位置, t 匹配成功,但后续的 o 匹配空格失败,整个尝试失败。
- 当尝试从 tonic 开始匹配时, to 匹配成功后,有三个可选的分支。引擎先选择 nite 尝试,在匹配到 t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值