8.3 回溯之旅

更新:11-14 现代故事 我要投稿 纠错 投诉

今天给各位分享8.3 回溯之旅的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

这有点像在岔路口留下记号。 —— 如果我们在遇到的每一个岔路口都留下一个标记,即使前面有死胡同,我们也可以根据标记返回而不会迷路。

为了说明NFA的匹配过程,我们看一下第2章给出的双引号字符串匹配示例,使用的正则表达式是".*",字符串是"quoted string"。匹配过程如图:

[图片上传失败.(image-f3c454-1545311212332)]

从图中可以看出,在匹配过程中,*曾经匹配过带引号的字符串",但为了匹配表达式中的最后一个",*不得不“交还”最后一个"。这次“尝试失败——重新选择”的过程是回溯(回溯)。

Backtrace仅属于NFA引擎。从前面的示意图可以看出,NFA匹配的时候,正则引擎并不能准确的知道当前的状态,只能在所有状态不确定的地方(现在已经匹配到了哪些字符,继续到字符串中的哪个位置,正则表达式中的哪个位置),逐一尝试,如果发现这条路不行,那就返回去选择最近保存的状态来尝试……在此继续直到达到最终状态;或者all 可能尝试了所有状态后,仍然达不到最终状态。

看到这里,就不难理解为什么不建议使用.*了,因为.可以匹配几乎任何字符串,它的意思是“匹配优先级”,所以正则引擎会让“.*”在处理“.*”之后的其他元素之前吞掉“几乎整个字符串”。仍然是上面的正则表达式,但是字符串变成了"quoted"字符串,回溯次数大大增加。如果结尾"之后有很长的文本,回溯的次数可能会大大增加。匹配过程如下图所示:

[图片上传失败.(image-2e92e0-1545311212332)]

要避免这种问题,最好的办法就是准确表达意图。例如,如果规定双引号字符串内不允许出现双引号字符,则表达式必须改为"[^"]*";当然,你也可以使用ignore来代替。优先考虑量词并将表达式更改为“.*”。但一般的经验法则是,除非绝对必要,否则尽量不要使用.*。

好了,文章到这里就结束啦,如果本次分享的8.3 回溯之旅和问题对您有所帮助,还望关注下本站哦!

用户评论

颜洛殇

这个日期让人联想到很多事情啊。

    有8位网友表示赞同!

羁绊你

夏天是不是要结束了?

    有19位网友表示赞同!

服从

八月份真是个热得难熬的月份。

    有20位网友表示赞同!

凉笙墨染

今天正好是八月三号吗?

    有13位网友表示赞同!

浮殇年华

感觉时间过得好快,已经到了8月了。

    有10位网友表示赞同!

苍白的笑〃

记得以前对这个日期有什么纪念日吗?

    有14位网友表示赞同!

浮光浅夏ζ

今年夏天过的怎么样呢?

    有20位网友表示赞同!

巷陌繁花丶

应该好好记录一下今天的回忆。

    有15位网友表示赞同!

雪花ミ飞舞

今天做什么值得纪念啊?

    有16位网友表示赞同!

抓不住i

希望今天的生活充满活力!

    有10位网友表示赞同!

凉城°

8.3 这数字听起来蛮吉利的。

    有9位网友表示赞同!

栀蓝

这个日期有什么特别的吗?

    有12位网友表示赞同!

疲倦了

今天是个美好的日子吧?

    有7位网友表示赞同!

一生只盼一人

夏天还有几天呢?

    有11位网友表示赞同!

敬情

希望明天也是个好天气。

    有17位网友表示赞同!

冷青裳

有没有什么有趣的计划呢?

    有13位网友表示赞同!

念旧是个瘾。

今天心情怎么样?

    有19位网友表示赞同!

龙吟凤

8月真是一个忙碌的月份啊!

    有18位网友表示赞同!

傲世九天

今天是不是要好好休息一下呢?

    有13位网友表示赞同!

_心抽搐到严重畸形っ°

晚上准备做什么活动呢?

    有5位网友表示赞同!

【8.3 回溯之旅】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界

上一篇:创建网站:域名注册与主机申请指南 下一篇:2023年度非主题写作回顾与第九期盛大启幕