加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 05:46:28 所属栏目:百科 来源:网络整理
导读:怎么会’. ?正规表达工作?是个 .零件匹配任何书面的,和?部分说它可以在那里吗?因此,例如,此正则表达式将匹配: ‘猫’ ”(即没有写,只是空字符串) 解决方法 除了汉斯·凯斯汀(Hans Kesting)已经说过的话,一个惰性乘法器将完成正常贪心乘数的精确对数:可
怎么会’. ?正规表达工作?是个 .零件匹配任何书面的,和?部分说它可以在那里吗?因此,例如,此正则表达式将匹配:

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

解决方法

除了汉斯·凯斯汀(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完全匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读