PCRE:。*和。*之间的区别?在正则表达式中

mic*_*.cz -3 pcre

我想知道,为什么.*.*?PCRE正则表达式中的和不一样(例如在PHP的preg_match()中。点.是任何可能字符*的符号,并且是0到无穷大重复的符号。为什么有符号?意味着0到1重复?但是,由于.*?与不能互换,所以显然不是一样的,.*但是我看不出逻辑上的区别,我必须总是尝试在某些情况下什么可行,什么不可行,我想这.*什么都不做,并且?是多余的,因为它可以指定.*为0或1倍-但空字符串为0倍,并且空字符串也应匹配.*

谁能解释给我确切的区别,并给我看个简短的例子?

谢谢

Bri*_*ham 5

我喜欢云吞,因为它们是美味的零食

在上面的字符串中,假设您尝试将其与匹配i.*s。结果将是整个字符串,因为这称为greedy match。从的第一个实例i到的最后一个实例匹配s

如果要使用非贪婪修饰符?(如)i.*?s,则会得到以下结果:

我爱肆意

这是因为非贪婪?修饰符仅匹配到的第一个实例s。