正则-正在回溯

https://www.cnblogs.com/chanshuyi/p/9197164.html

 

正则表达式中有这么三种模式:贪婪模式、懒惰模式、独占模式

text="abbc" regex="ab{1,3}c"

在关于数量的匹配中,有 + ? * {min,max} 四种两次,
如果只是单独使用,那么它们就是贪婪模式,例如regex="ab{1,3}c";

如果在使用的后面追加?,则变成懒惰模式,例如regex="ab{1,3}?c";
正则表达式的第一个操作符 a 与 字符串第一个字符 a 匹配,匹配成功。于是正则表达式的第二个操作符 b{1,3}? 和 字符串第二个字符 b 匹配,匹配成功。因为最小匹配原则,所以拿正则表达式第三个操作符c与字符串第三个字符b匹配,发现不匹配。于是回溯回去,拿正则表达式第二个操作符b{1,3}?和字符串第三个字符b匹配,匹配成功。于是再拿正则表达式第三个操作符c与字符串第四个字符c匹配,匹配成功。于是结束。

如果在使用的后面追加+,则变成独占模式,例如regex="ab{1,3}+c";

posted @ 2019-10-07 17:13  zbjice  阅读(108)  评论(0)    收藏  举报