Jaka jest różnica pomiędzy:
(.+?)
a
(.*?)
kiedy używam go w wyrażeniu regex preg_match
?
1 odpowiedź
Są to kwantyfikatory, tutaj podrzucam trochę informacji:
http://blog.kamilbrenk.pl/optymalizacja-wyrazen-regularnych/
https://www.forumweb.pl/php/pcre-kwantyfikator-zachlanny-i-na-odwrot,56460
- 0 lub więcej z poprzedniego wyrażenia
- 1 lub więcej z poprzedniego wyrażenia
Domyślnie kwantyfikator jest zachłanny, co oznacza, że pasuje do jak największej liczby znaków.
Po „?” zmianie zachowania przez kwantyfikator, aby ten kwantyfikator stał się „niezachłanny”, oznacza, że będzie pasować w najmniejszym stopniu.
Na przykład w ciągu „abab”
a. * b
dopasuje „abab” (preg_match_all
zwróci jedno dopasowanie, „abab”)
podczas gdy a. *? b
dopasuje tylko początkowe „ab” (preg_match_all
zwróci dwa dopasowania, „ab”)