2024-09-26 04:45:39 发布
网友
有什么区别:
(.+?)
以及
(.*?)
当我在php preg_matchregex中使用它时?
preg_match
它们被称为量词。
前面表达式的*0或更多
*
前面表达式的+1或更多
+
默认情况下,量词是贪婪的,这意味着它匹配尽可能多的字符。
量词改变行为使量词“不清晰”后的?表示它将尽可能少地匹配。
?
贪婪/不整洁示例
例如字符串“abab”
a.*b将匹配“abab”(preg_match_all将返回一个匹配,即“abab”)
a.*b
而a.*?b将只匹配开始的“ab”(preg_match_all将返回两个匹配,“ab”)
a.*?b
您可以在线测试regex,例如在Regexr上,see the greedy example here
+匹配前面模式的一个或多个实例。*匹配前面模式的0个或多个实例。
因此,基本上,如果使用+,则必须至少有一个模式实例,如果使用*,则如果没有模式实例,则仍然匹配。
第一个(+)是一个或多个字符。第二个(*)是零个或多个字符。两者都是非贪婪的(?)并且匹配任何东西(.)。
.
它们被称为量词。
前面表达式的
*
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个或多个实例。因此,基本上,如果使用
+
,则必须至少有一个模式实例,如果使用*
,则如果没有模式实例,则仍然匹配。第一个(
+
)是一个或多个字符。第二个(*
)是零个或多个字符。两者都是非贪婪的(?
)并且匹配任何东西(.
)。相关问题 更多 >
编程相关推荐