正则表达式加 vs 星号差异?

2024-06-16 08:46:51 发布

您现在位置:Python中文网/ 问答频道 /正文

有什么区别:

(.+?)

以及

(.*?)

当我在php preg_matchregex中使用它时?


Tags: php区别pregmatchregex
3条回答

它们被称为量词。

前面表达式的*0或更多

前面表达式的+1或更多

默认情况下,量词是贪婪的,这意味着它匹配尽可能多的字符。

量词改变行为使量词“不清晰”后的?表示它将尽可能少地匹配。

贪婪/不整洁示例

例如字符串“abab

a.*b将匹配“abab”(preg_match_all将返回一个匹配,即“abab”)

a.*?b将只匹配开始的“ab”(preg_match_all将返回两个匹配,“ab”)

您可以在线测试regex,例如在Regexr上,see the greedy example here

+匹配前面模式的一个或多个实例。*匹配前面模式的0个或多个实例。

因此,基本上,如果使用+,则必须至少有一个模式实例,如果使用*,则如果没有模式实例,则仍然匹配。

第一个(+)是一个或多个字符。第二个(*)是零个或多个字符。两者都是非贪婪的(?)并且匹配任何东西(.)。

相关问题 更多 >