正则表达式 – 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完全匹配.

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...