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

前端之家收集整理的这篇文章主要介绍了正则表达式 – 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完全匹配.

猜你在找的正则表达式相关文章