关于懒惰匹配到底是怎么个懒惰法(.*?和.*的区别)

  首先. * ?三者在正则中各自代表什么大家应该清楚,如果不清楚请看下图关于懒惰匹配到底是怎么个懒惰法(.*?和.*的区别)_第1张图片

接下来进行测试,python中使用如下代码

关于懒惰匹配到底是怎么个懒惰法(.*?和.*的区别)_第2张图片

运行得到结果

观察发现,当使用.*?进行最后一个组的匹配时,居然匹配为空,明明就连单独一个.都能匹配上,有时脑子想太多容易绕晕,其实很简单,?简单来说就是匹配0次到1次,既然称为懒惰匹配,那就该有懒惰的样子,我能匹配0次绝不匹配1次,它以末尾""(空字符)为结束符进行匹配的话,匹配到""(空字符)这个地方可以得到""或者"dogs",前者当然是匹配0次的结果,所以我懒,我才不会去匹配一次呢,那为什么前面那些.*?可以匹配到值呢,因为它们的后面都跟了一个空格(不要漏掉这个),我需要匹配到空格才能停下来,好歹自己稍微动动脑子,就不说完了。(解释文字没有排版大家见谅;))

 

 

 

 

 

你可能感兴趣的:(关于懒惰匹配到底是怎么个懒惰法(.*?和.*的区别))