微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – Hows做正则表达式:/. ?/工作?

怎么会’. ?正规表达工作?是个 .零件匹配任何书面的,和?部分说它可以在那里吗?因此,例如,此正则表达式将匹配:

‘猫’
”(即没有写,只是空字符串)

解决方法

除了汉斯·凯斯汀(Hans Kesting)已经说过的话,一个惰性乘法器将完成正常贪心乘数的精确对数:可能的匹配保持尽可能小,并测试正则表达式的其余部分.

因此,如果您正在使用字符串aaba并在其上测试正则表达式a.* b,则内部处理步骤如下:

> a in.* b匹配aaba
a.* b中的.*与aaba匹配,因为.*是贪婪的

>.*然后匹配aaba
>.*然后匹配aaba

a.* b中的> b失败,因为没有留下任何信件

>回溯向后退一步.*现在只会匹配aaba中的bb

a.* b中的b仍然在aaba上失败

>回溯向后退一步.*现在只匹配aaba中的b

> a.* b现在匹配aaba中的b,我们已经完成了.

所以完整的比赛是aaba.

如果我们使用惰性乘数(a.*?b)执行相同操作,则处理将执行oposite,尝试尽可能匹配尽可能少的字符:

> a in.*?b匹配aaba
a.*?b中的.* *不匹配(* =零或更多次重复),并且因为.*被声明为lazy(.*?),所以正则表达式的其余部分被测试
> a.*?b在aaba上失败

>回溯将尝试增加.*的匹配.

>.*现在匹配aaba
> a.*?b匹配aaba,我们已经完成了.

如果aaba完全匹配.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐