正则表达式加与星差?

2022-08-30 07:13:48

有什么区别:

(.+?)

(.*?)

当我在我的php正则表达式中使用它时?preg_match


答案 1

它们被称为量词。

*上述表达式的 0 个或更多

+前面的 1 个或多个表达式

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

在量词改变行为以使该量词“不greed”之后,意味着它将尽可能少地匹配。?

示例贪婪/不贪婪

例如,在字符串“abab”上"

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

while 将仅匹配起始“ab”(preg_match_all将返回两个匹配项,“ab”)a.*?b

您可以在线测试您的正则表达式,例如在正则表达式上,请参阅此处的贪婪示例


答案 2

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


推荐