请问正则表达式里preg_replace函数里的(.+?)代表什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/24 04:01:14
我只知道.+?各自的意思,但是放在一起有点费解,请教大家指点一下?

呵呵,正巧我也遇到这个问题,刚弄明白,这种称为非贪婪模式。

贪婪模式:在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。

非贪婪模式:在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如:"{m,n}", "{m,}", "?", "*", "+",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。

看完之后应该明白,如果单独是(.+?) 就是匹配尽可能少个数的任意字符(至少1个,因为+表1到无穷个)
如果(.+?)后面还有其他条件,则会像贪婪模式类似,会最小限度的匹配到其他条件成立.

. 这个符号代表除了\n之外的所有字符

+ 这个符号代表匹配一个或更多

? 这个符号代表尽量少匹配

这三个在一起的意思是匹配所有的字符,但是要尽量少匹配。

其实就是把所有的字符直接分隔成一个字符一个符的样子。